public Observable<VideosModel> searchAsync(String query, SearchOptionalParameter searchOptionalParameter) {
        return searchWithServiceResponseAsync(query, searchOptionalParameter).map(new Func1<ServiceResponse<VideosModel>, VideosModel>() {
            @Override
            public VideosModel call(ServiceResponse<VideosModel> response) {
                return response.body();
            }
        });
    }
public Observable < VideosModel > searchAsync ( String query , SearchOptionalParameter searchOptionalParameter ) { return searchWithServiceResponseAsync ( query , searchOptionalParameter ) . map ( new Func1 < ServiceResponse < VideosModel > , VideosModel > ( ) { @ Override public VideosModel call ( ServiceResponse < VideosModel > response ) { return response . body ( ) ; } } ) ; }
The Video Search API lets you send a search query to Bing and get back a list of videos that are relevant to the search query. This section provides technical details about the query parameters and headers that you use to request videos and the JSON response objects that contain them. For examples that show how to make requests, see [Searching the Web for Videos](https://docs.microsoft.com/azure/cognitive-services/bing-video-search/search-the-web).

@param query The user's search query string. The query string cannot be empty. The query string may contain [Bing Advanced Operators](http://msdn.microsoft.com/library/ff795620.aspx). For example, to limit videos to a specific domain, use the [site:](http://msdn.microsoft.com/library/ff795613.aspx) operator. Use this parameter only with the Video Search API. Do not specify this parameter when calling the Trending Videos API.
@param searchOptionalParameter the object representing the optional parameters to be set before calling this API
@throws IllegalArgumentException thrown if parameters fail the validation
@return the observable to the VideosModel object