# Source code for azure.cognitiveservices.search.newssearch.models._models_py3

    # coding=utf-8
    # --------------------------------------------------------------------------
    # Copyright (c) Microsoft Corporation. All rights reserved.
    # Licensed under the MIT License. See License.txt in the project root for
    # license information.
    #
    # Code generated by Microsoft (R) AutoRest Code Generator.
    # Changes may cause incorrect behavior and will be lost if the code is
    # regenerated.
    # --------------------------------------------------------------------------

    from msrest.serialization import Model
    from msrest.exceptions import HttpOperationError

    class ResponseBase(Model):
        """Response base.

        You probably want to use the sub-classes and not this class directly. Known
        sub-classes are: Identifiable

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        """

        _validation = {
            '_type': {'required': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
        }

        _subtype_map = {
            '_type': {'Identifiable': 'Identifiable'}
        }

        def __init__(self, **kwargs) -> None:
            super(ResponseBase, self).__init__(**kwargs)
            self._type = None

    class Identifiable(ResponseBase):
        """Defines the identity of a resource.

        You probably want to use the sub-classes and not this class directly. Known
        sub-classes are: Response

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
        }

        _subtype_map = {
            '_type': {'Response': 'Response'}
        }

        def __init__(self, **kwargs) -> None:
            super(Identifiable, self).__init__(**kwargs)
            self.id = None
            self._type = 'Identifiable'

    class Response(Identifiable):
        """Defines a response. All schemas that could be returned at the root of a
        response should inherit from this.

        You probably want to use the sub-classes and not this class directly. Known
        sub-classes are: Answer, Thing, ErrorResponse

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
        }

        _subtype_map = {
            '_type': {'Answer': 'Answer', 'Thing': 'Thing', 'ErrorResponse': 'ErrorResponse'}
        }

        def __init__(self, **kwargs) -> None:
            super(Response, self).__init__(**kwargs)
            self.web_search_url = None
            self._type = 'Response'

    class Answer(Response):
        """Defines an answer.

        You probably want to use the sub-classes and not this class directly. Known
        sub-classes are: SearchResultsAnswer, TrendingTopics

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar follow_up_queries:
        :vartype follow_up_queries:
         list[~azure.cognitiveservices.search.newssearch.models.Query]
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'follow_up_queries': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'follow_up_queries': {'key': 'followUpQueries', 'type': '[Query]'},
        }

        _subtype_map = {
            '_type': {'SearchResultsAnswer': 'SearchResultsAnswer', 'TrendingTopics': 'TrendingTopics'}
        }

        def __init__(self, **kwargs) -> None:
            super(Answer, self).__init__(**kwargs)
            self.follow_up_queries = None
            self._type = 'Answer'

    class Thing(Response):
        """Defines a thing.

        You probably want to use the sub-classes and not this class directly. Known
        sub-classes are: NewsTopic, CreativeWork, Organization

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar name: The name of the thing represented by this object.
        :vartype name: str
        :ivar url: The URL to get more information about the thing represented by
         this object.
        :vartype url: str
        :ivar image: An image of the item.
        :vartype image:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        :ivar description: A short description of the item.
        :vartype description: str
        :ivar alternate_name: An alias for the item
        :vartype alternate_name: str
        :ivar bing_id: An ID that uniquely identifies this item.
        :vartype bing_id: str
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'name': {'readonly': True},
            'url': {'readonly': True},
            'image': {'readonly': True},
            'description': {'readonly': True},
            'alternate_name': {'readonly': True},
            'bing_id': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'name': {'key': 'name', 'type': 'str'},
            'url': {'key': 'url', 'type': 'str'},
            'image': {'key': 'image', 'type': 'ImageObject'},
            'description': {'key': 'description', 'type': 'str'},
            'alternate_name': {'key': 'alternateName', 'type': 'str'},
            'bing_id': {'key': 'bingId', 'type': 'str'},
        }

        _subtype_map = {
            '_type': {'News/Topic': 'NewsTopic', 'CreativeWork': 'CreativeWork', 'Organization': 'Organization'}
        }

        def __init__(self, **kwargs) -> None:
            super(Thing, self).__init__(**kwargs)
            self.name = None
            self.url = None
            self.image = None
            self.description = None
            self.alternate_name = None
            self.bing_id = None
            self._type = 'Thing'

    class CreativeWork(Thing):
        """The most generic kind of creative work, including books, movies,
        photographs, software programs, etc.

        You probably want to use the sub-classes and not this class directly. Known
        sub-classes are: Article, MediaObject

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar name: The name of the thing represented by this object.
        :vartype name: str
        :ivar url: The URL to get more information about the thing represented by
         this object.
        :vartype url: str
        :ivar image: An image of the item.
        :vartype image:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        :ivar description: A short description of the item.
        :vartype description: str
        :ivar alternate_name: An alias for the item
        :vartype alternate_name: str
        :ivar bing_id: An ID that uniquely identifies this item.
        :vartype bing_id: str
        :ivar thumbnail_url: The URL to a thumbnail of the item.
        :vartype thumbnail_url: str
        :ivar provider: The source of the creative work.
        :vartype provider:
         list[~azure.cognitiveservices.search.newssearch.models.Thing]
        :ivar date_published: The date on which the CreativeWork was published.
        :vartype date_published: str
        :ivar video: A video of the item.
        :vartype video:
         ~azure.cognitiveservices.search.newssearch.models.VideoObject
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'name': {'readonly': True},
            'url': {'readonly': True},
            'image': {'readonly': True},
            'description': {'readonly': True},
            'alternate_name': {'readonly': True},
            'bing_id': {'readonly': True},
            'thumbnail_url': {'readonly': True},
            'provider': {'readonly': True},
            'date_published': {'readonly': True},
            'video': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'name': {'key': 'name', 'type': 'str'},
            'url': {'key': 'url', 'type': 'str'},
            'image': {'key': 'image', 'type': 'ImageObject'},
            'description': {'key': 'description', 'type': 'str'},
            'alternate_name': {'key': 'alternateName', 'type': 'str'},
            'bing_id': {'key': 'bingId', 'type': 'str'},
            'thumbnail_url': {'key': 'thumbnailUrl', 'type': 'str'},
            'provider': {'key': 'provider', 'type': '[Thing]'},
            'date_published': {'key': 'datePublished', 'type': 'str'},
            'video': {'key': 'video', 'type': 'VideoObject'},
        }

        _subtype_map = {
            '_type': {'Article': 'Article', 'MediaObject': 'MediaObject'}
        }

        def __init__(self, **kwargs) -> None:
            super(CreativeWork, self).__init__(**kwargs)
            self.thumbnail_url = None
            self.provider = None
            self.date_published = None
            self.video = None
            self._type = 'CreativeWork'

    class Article(CreativeWork):
        """Article.

        You probably want to use the sub-classes and not this class directly. Known
        sub-classes are: NewsArticle

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar name: The name of the thing represented by this object.
        :vartype name: str
        :ivar url: The URL to get more information about the thing represented by
         this object.
        :vartype url: str
        :ivar image: An image of the item.
        :vartype image:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        :ivar description: A short description of the item.
        :vartype description: str
        :ivar alternate_name: An alias for the item
        :vartype alternate_name: str
        :ivar bing_id: An ID that uniquely identifies this item.
        :vartype bing_id: str
        :ivar thumbnail_url: The URL to a thumbnail of the item.
        :vartype thumbnail_url: str
        :ivar provider: The source of the creative work.
        :vartype provider:
         list[~azure.cognitiveservices.search.newssearch.models.Thing]
        :ivar date_published: The date on which the CreativeWork was published.
        :vartype date_published: str
        :ivar video: A video of the item.
        :vartype video:
         ~azure.cognitiveservices.search.newssearch.models.VideoObject
        :ivar word_count: The number of words in the text of the Article.
        :vartype word_count: int
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'name': {'readonly': True},
            'url': {'readonly': True},
            'image': {'readonly': True},
            'description': {'readonly': True},
            'alternate_name': {'readonly': True},
            'bing_id': {'readonly': True},
            'thumbnail_url': {'readonly': True},
            'provider': {'readonly': True},
            'date_published': {'readonly': True},
            'video': {'readonly': True},
            'word_count': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'name': {'key': 'name', 'type': 'str'},
            'url': {'key': 'url', 'type': 'str'},
            'image': {'key': 'image', 'type': 'ImageObject'},
            'description': {'key': 'description', 'type': 'str'},
            'alternate_name': {'key': 'alternateName', 'type': 'str'},
            'bing_id': {'key': 'bingId', 'type': 'str'},
            'thumbnail_url': {'key': 'thumbnailUrl', 'type': 'str'},
            'provider': {'key': 'provider', 'type': '[Thing]'},
            'date_published': {'key': 'datePublished', 'type': 'str'},
            'video': {'key': 'video', 'type': 'VideoObject'},
            'word_count': {'key': 'wordCount', 'type': 'int'},
        }

        _subtype_map = {
            '_type': {'NewsArticle': 'NewsArticle'}
        }

        def __init__(self, **kwargs) -> None:
            super(Article, self).__init__(**kwargs)
            self.word_count = None
            self._type = 'Article'

    class Error(Model):
        """Defines the error that occurred.

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param code: Required. The error code that identifies the category of
         error. Possible values include: 'None', 'ServerError', 'InvalidRequest',
         'RateLimitExceeded', 'InvalidAuthorization', 'InsufficientAuthorization'.
         Default value: "None" .
        :type code: str or
         ~azure.cognitiveservices.search.newssearch.models.ErrorCode
        :ivar sub_code: The error code that further helps to identify the error.
         Possible values include: 'UnexpectedError', 'ResourceError',
         'NotImplemented', 'ParameterMissing', 'ParameterInvalidValue',
         'HttpNotAllowed', 'Blocked', 'AuthorizationMissing',
         'AuthorizationRedundancy', 'AuthorizationDisabled', 'AuthorizationExpired'
        :vartype sub_code: str or
         ~azure.cognitiveservices.search.newssearch.models.ErrorSubCode
        :param message: Required. A description of the error.
        :type message: str
        :ivar more_details: A description that provides additional information
         about the error.
        :vartype more_details: str
        :ivar parameter: The parameter in the request that caused the error.
        :vartype parameter: str
        :ivar value: The parameter's value in the request that was not valid.
        :vartype value: str
        """

        _validation = {
            'code': {'required': True},
            'sub_code': {'readonly': True},
            'message': {'required': True},
            'more_details': {'readonly': True},
            'parameter': {'readonly': True},
            'value': {'readonly': True},
        }

        _attribute_map = {
            'code': {'key': 'code', 'type': 'str'},
            'sub_code': {'key': 'subCode', 'type': 'str'},
            'message': {'key': 'message', 'type': 'str'},
            'more_details': {'key': 'moreDetails', 'type': 'str'},
            'parameter': {'key': 'parameter', 'type': 'str'},
            'value': {'key': 'value', 'type': 'str'},
        }

        def __init__(self, *, message: str, code="None", **kwargs) -> None:
            super(Error, self).__init__(**kwargs)
            self.code = code
            self.sub_code = None
            self.message = message
            self.more_details = None
            self.parameter = None
            self.value = None

    class ErrorResponse(Response):
        """The top-level response that represents a failed request.

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :param errors: Required. A list of errors that describe the reasons why
         the request failed.
        :type errors:
         list[~azure.cognitiveservices.search.newssearch.models.Error]
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'errors': {'required': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'errors': {'key': 'errors', 'type': '[Error]'},
        }

        def __init__(self, *, errors, **kwargs) -> None:
            super(ErrorResponse, self).__init__(**kwargs)
            self.errors = errors
            self._type = 'ErrorResponse'

    class ErrorResponseException(HttpOperationError):
        """Server responsed with exception of type: 'ErrorResponse'.

        :param deserialize: A deserializer
        :param response: Server response to be deserialized.
        """

        def __init__(self, deserialize, response, *args):

            super(ErrorResponseException, self).__init__(deserialize, response, 'ErrorResponse', *args)

    class MediaObject(CreativeWork):
        """Defines a media object.

        You probably want to use the sub-classes and not this class directly. Known
        sub-classes are: ImageObject, VideoObject

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar name: The name of the thing represented by this object.
        :vartype name: str
        :ivar url: The URL to get more information about the thing represented by
         this object.
        :vartype url: str
        :ivar image: An image of the item.
        :vartype image:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        :ivar description: A short description of the item.
        :vartype description: str
        :ivar alternate_name: An alias for the item
        :vartype alternate_name: str
        :ivar bing_id: An ID that uniquely identifies this item.
        :vartype bing_id: str
        :ivar thumbnail_url: The URL to a thumbnail of the item.
        :vartype thumbnail_url: str
        :ivar provider: The source of the creative work.
        :vartype provider:
         list[~azure.cognitiveservices.search.newssearch.models.Thing]
        :ivar date_published: The date on which the CreativeWork was published.
        :vartype date_published: str
        :ivar video: A video of the item.
        :vartype video:
         ~azure.cognitiveservices.search.newssearch.models.VideoObject
        :ivar content_url: Original URL to retrieve the source (file) for the
         media object (e.g the source URL for the image).
        :vartype content_url: str
        :ivar width: The width of the source media object, in pixels.
        :vartype width: int
        :ivar height: The height of the source media object, in pixels.
        :vartype height: int
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'name': {'readonly': True},
            'url': {'readonly': True},
            'image': {'readonly': True},
            'description': {'readonly': True},
            'alternate_name': {'readonly': True},
            'bing_id': {'readonly': True},
            'thumbnail_url': {'readonly': True},
            'provider': {'readonly': True},
            'date_published': {'readonly': True},
            'video': {'readonly': True},
            'content_url': {'readonly': True},
            'width': {'readonly': True},
            'height': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'name': {'key': 'name', 'type': 'str'},
            'url': {'key': 'url', 'type': 'str'},
            'image': {'key': 'image', 'type': 'ImageObject'},
            'description': {'key': 'description', 'type': 'str'},
            'alternate_name': {'key': 'alternateName', 'type': 'str'},
            'bing_id': {'key': 'bingId', 'type': 'str'},
            'thumbnail_url': {'key': 'thumbnailUrl', 'type': 'str'},
            'provider': {'key': 'provider', 'type': '[Thing]'},
            'date_published': {'key': 'datePublished', 'type': 'str'},
            'video': {'key': 'video', 'type': 'VideoObject'},
            'content_url': {'key': 'contentUrl', 'type': 'str'},
            'width': {'key': 'width', 'type': 'int'},
            'height': {'key': 'height', 'type': 'int'},
        }

        _subtype_map = {
            '_type': {'ImageObject': 'ImageObject', 'VideoObject': 'VideoObject'}
        }

        def __init__(self, **kwargs) -> None:
            super(MediaObject, self).__init__(**kwargs)
            self.content_url = None
            self.width = None
            self.height = None
            self._type = 'MediaObject'

    class ImageObject(MediaObject):
        """Defines an image.

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar name: The name of the thing represented by this object.
        :vartype name: str
        :ivar url: The URL to get more information about the thing represented by
         this object.
        :vartype url: str
        :ivar image: An image of the item.
        :vartype image:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        :ivar description: A short description of the item.
        :vartype description: str
        :ivar alternate_name: An alias for the item
        :vartype alternate_name: str
        :ivar bing_id: An ID that uniquely identifies this item.
        :vartype bing_id: str
        :ivar thumbnail_url: The URL to a thumbnail of the item.
        :vartype thumbnail_url: str
        :ivar provider: The source of the creative work.
        :vartype provider:
         list[~azure.cognitiveservices.search.newssearch.models.Thing]
        :ivar date_published: The date on which the CreativeWork was published.
        :vartype date_published: str
        :ivar video: A video of the item.
        :vartype video:
         ~azure.cognitiveservices.search.newssearch.models.VideoObject
        :ivar content_url: Original URL to retrieve the source (file) for the
         media object (e.g the source URL for the image).
        :vartype content_url: str
        :ivar width: The width of the source media object, in pixels.
        :vartype width: int
        :ivar height: The height of the source media object, in pixels.
        :vartype height: int
        :ivar thumbnail: The URL to a thumbnail of the image
        :vartype thumbnail:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'name': {'readonly': True},
            'url': {'readonly': True},
            'image': {'readonly': True},
            'description': {'readonly': True},
            'alternate_name': {'readonly': True},
            'bing_id': {'readonly': True},
            'thumbnail_url': {'readonly': True},
            'provider': {'readonly': True},
            'date_published': {'readonly': True},
            'video': {'readonly': True},
            'content_url': {'readonly': True},
            'width': {'readonly': True},
            'height': {'readonly': True},
            'thumbnail': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'name': {'key': 'name', 'type': 'str'},
            'url': {'key': 'url', 'type': 'str'},
            'image': {'key': 'image', 'type': 'ImageObject'},
            'description': {'key': 'description', 'type': 'str'},
            'alternate_name': {'key': 'alternateName', 'type': 'str'},
            'bing_id': {'key': 'bingId', 'type': 'str'},
            'thumbnail_url': {'key': 'thumbnailUrl', 'type': 'str'},
            'provider': {'key': 'provider', 'type': '[Thing]'},
            'date_published': {'key': 'datePublished', 'type': 'str'},
            'video': {'key': 'video', 'type': 'VideoObject'},
            'content_url': {'key': 'contentUrl', 'type': 'str'},
            'width': {'key': 'width', 'type': 'int'},
            'height': {'key': 'height', 'type': 'int'},
            'thumbnail': {'key': 'thumbnail', 'type': 'ImageObject'},
        }

        def __init__(self, **kwargs) -> None:
            super(ImageObject, self).__init__(**kwargs)
            self.thumbnail = None
            self._type = 'ImageObject'

    class SearchResultsAnswer(Answer):
        """Defines a search result answer.

        You probably want to use the sub-classes and not this class directly. Known
        sub-classes are: News

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar follow_up_queries:
        :vartype follow_up_queries:
         list[~azure.cognitiveservices.search.newssearch.models.Query]
        :ivar total_estimated_matches: The estimated number of webpages that are
         relevant to the query. Use this number along with the count and offset
         query parameters to page the results.
        :vartype total_estimated_matches: long
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'follow_up_queries': {'readonly': True},
            'total_estimated_matches': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'follow_up_queries': {'key': 'followUpQueries', 'type': '[Query]'},
            'total_estimated_matches': {'key': 'totalEstimatedMatches', 'type': 'long'},
        }

        _subtype_map = {
            '_type': {'News': 'News'}
        }

        def __init__(self, **kwargs) -> None:
            super(SearchResultsAnswer, self).__init__(**kwargs)
            self.total_estimated_matches = None
            self._type = 'SearchResultsAnswer'

    class News(SearchResultsAnswer):
        """Defines a news answer.

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar follow_up_queries:
        :vartype follow_up_queries:
         list[~azure.cognitiveservices.search.newssearch.models.Query]
        :ivar total_estimated_matches: The estimated number of webpages that are
         relevant to the query. Use this number along with the count and offset
         query parameters to page the results.
        :vartype total_estimated_matches: long
        :param value: Required. An array of NewsArticle objects that contain
         information about news articles that are relevant to the query. If there
         are no results to return for the request, the array is empty.
        :type value:
         list[~azure.cognitiveservices.search.newssearch.models.NewsArticle]
        :ivar location: Location of local news
        :vartype location: str
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'follow_up_queries': {'readonly': True},
            'total_estimated_matches': {'readonly': True},
            'value': {'required': True},
            'location': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'follow_up_queries': {'key': 'followUpQueries', 'type': '[Query]'},
            'total_estimated_matches': {'key': 'totalEstimatedMatches', 'type': 'long'},
            'value': {'key': 'value', 'type': '[NewsArticle]'},
            'location': {'key': 'location', 'type': 'str'},
        }

        def __init__(self, *, value, **kwargs) -> None:
            super(News, self).__init__(**kwargs)
            self.value = value
            self.location = None
            self._type = 'News'

    class NewsArticle(Article):
        """Defines a news article.

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar name: The name of the thing represented by this object.
        :vartype name: str
        :ivar url: The URL to get more information about the thing represented by
         this object.
        :vartype url: str
        :ivar image: An image of the item.
        :vartype image:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        :ivar description: A short description of the item.
        :vartype description: str
        :ivar alternate_name: An alias for the item
        :vartype alternate_name: str
        :ivar bing_id: An ID that uniquely identifies this item.
        :vartype bing_id: str
        :ivar thumbnail_url: The URL to a thumbnail of the item.
        :vartype thumbnail_url: str
        :ivar provider: The source of the creative work.
        :vartype provider:
         list[~azure.cognitiveservices.search.newssearch.models.Thing]
        :ivar date_published: The date on which the CreativeWork was published.
        :vartype date_published: str
        :ivar video: A video of the item.
        :vartype video:
         ~azure.cognitiveservices.search.newssearch.models.VideoObject
        :ivar word_count: The number of words in the text of the Article.
        :vartype word_count: int
        :ivar category: The news category that the article belongs to. For
         example, Sports. If the news category cannot be determined, the article
         does not include this field.
        :vartype category: str
        :ivar headline: A Boolean value that indicates whether the news article is
         a headline. If true, the article is a headline. The article includes this
         field only for news categories requests that do not specify the category
         query parameter.
        :vartype headline: bool
        :ivar clustered_articles: A list of related news articles.
        :vartype clustered_articles:
         list[~azure.cognitiveservices.search.newssearch.models.NewsArticle]
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'name': {'readonly': True},
            'url': {'readonly': True},
            'image': {'readonly': True},
            'description': {'readonly': True},
            'alternate_name': {'readonly': True},
            'bing_id': {'readonly': True},
            'thumbnail_url': {'readonly': True},
            'provider': {'readonly': True},
            'date_published': {'readonly': True},
            'video': {'readonly': True},
            'word_count': {'readonly': True},
            'category': {'readonly': True},
            'headline': {'readonly': True},
            'clustered_articles': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'name': {'key': 'name', 'type': 'str'},
            'url': {'key': 'url', 'type': 'str'},
            'image': {'key': 'image', 'type': 'ImageObject'},
            'description': {'key': 'description', 'type': 'str'},
            'alternate_name': {'key': 'alternateName', 'type': 'str'},
            'bing_id': {'key': 'bingId', 'type': 'str'},
            'thumbnail_url': {'key': 'thumbnailUrl', 'type': 'str'},
            'provider': {'key': 'provider', 'type': '[Thing]'},
            'date_published': {'key': 'datePublished', 'type': 'str'},
            'video': {'key': 'video', 'type': 'VideoObject'},
            'word_count': {'key': 'wordCount', 'type': 'int'},
            'category': {'key': 'category', 'type': 'str'},
            'headline': {'key': 'headline', 'type': 'bool'},
            'clustered_articles': {'key': 'clusteredArticles', 'type': '[NewsArticle]'},
        }

        def __init__(self, **kwargs) -> None:
            super(NewsArticle, self).__init__(**kwargs)
            self.category = None
            self.headline = None
            self.clustered_articles = None
            self._type = 'NewsArticle'

    class NewsTopic(Thing):
        """NewsTopic.

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar name: The name of the thing represented by this object.
        :vartype name: str
        :ivar url: The URL to get more information about the thing represented by
         this object.
        :vartype url: str
        :ivar image: An image of the item.
        :vartype image:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        :ivar description: A short description of the item.
        :vartype description: str
        :ivar alternate_name: An alias for the item
        :vartype alternate_name: str
        :ivar bing_id: An ID that uniquely identifies this item.
        :vartype bing_id: str
        :ivar is_breaking_news: A Boolean value that indicates whether the topic
         is considered breaking news. If the topic is considered breaking news, the
         value is true.
        :vartype is_breaking_news: bool
        :ivar query: A search query term that returns this trending topic.
        :vartype query: ~azure.cognitiveservices.search.newssearch.models.Query
        :ivar news_search_url: The URL to the Bing News search results for the
         search query term
        :vartype news_search_url: str
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'name': {'readonly': True},
            'url': {'readonly': True},
            'image': {'readonly': True},
            'description': {'readonly': True},
            'alternate_name': {'readonly': True},
            'bing_id': {'readonly': True},
            'is_breaking_news': {'readonly': True},
            'query': {'readonly': True},
            'news_search_url': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'name': {'key': 'name', 'type': 'str'},
            'url': {'key': 'url', 'type': 'str'},
            'image': {'key': 'image', 'type': 'ImageObject'},
            'description': {'key': 'description', 'type': 'str'},
            'alternate_name': {'key': 'alternateName', 'type': 'str'},
            'bing_id': {'key': 'bingId', 'type': 'str'},
            'is_breaking_news': {'key': 'isBreakingNews', 'type': 'bool'},
            'query': {'key': 'query', 'type': 'Query'},
            'news_search_url': {'key': 'newsSearchUrl', 'type': 'str'},
        }

        def __init__(self, **kwargs) -> None:
            super(NewsTopic, self).__init__(**kwargs)
            self.is_breaking_news = None
            self.query = None
            self.news_search_url = None
            self._type = 'News/Topic'

    class Organization(Thing):
        """Defines an organization.

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar name: The name of the thing represented by this object.
        :vartype name: str
        :ivar url: The URL to get more information about the thing represented by
         this object.
        :vartype url: str
        :ivar image: An image of the item.
        :vartype image:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        :ivar description: A short description of the item.
        :vartype description: str
        :ivar alternate_name: An alias for the item
        :vartype alternate_name: str
        :ivar bing_id: An ID that uniquely identifies this item.
        :vartype bing_id: str
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'name': {'readonly': True},
            'url': {'readonly': True},
            'image': {'readonly': True},
            'description': {'readonly': True},
            'alternate_name': {'readonly': True},
            'bing_id': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'name': {'key': 'name', 'type': 'str'},
            'url': {'key': 'url', 'type': 'str'},
            'image': {'key': 'image', 'type': 'ImageObject'},
            'description': {'key': 'description', 'type': 'str'},
            'alternate_name': {'key': 'alternateName', 'type': 'str'},
            'bing_id': {'key': 'bingId', 'type': 'str'},
        }

        def __init__(self, **kwargs) -> None:
            super(Organization, self).__init__(**kwargs)
            self._type = 'Organization'

    class Query(Model):
        """Defines a search query.

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param text: Required. The query string. Use this string as the query term
         in a new search request.
        :type text: str
        :ivar display_text: The display version of the query term. This version of
         the query term may contain special characters that highlight the search
         term found in the query string. The string contains the highlighting
         characters only if the query enabled hit highlighting
        :vartype display_text: str
        :ivar web_search_url: The URL that takes the user to the Bing search
         results page for the query.Only related search results include this field.
        :vartype web_search_url: str
        :ivar search_link: The URL that you use to get the results of the related
         search. Before using the URL, you must append query parameters as
         appropriate and include the Ocp-Apim-Subscription-Key header. Use this URL
         if you're displaying the results in your own user interface. Otherwise,
         use the webSearchUrl URL.
        :vartype search_link: str
        :ivar thumbnail: The URL to a thumbnail of a related image.
        :vartype thumbnail:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        """

        _validation = {
            'text': {'required': True},
            'display_text': {'readonly': True},
            'web_search_url': {'readonly': True},
            'search_link': {'readonly': True},
            'thumbnail': {'readonly': True},
        }

        _attribute_map = {
            'text': {'key': 'text', 'type': 'str'},
            'display_text': {'key': 'displayText', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'search_link': {'key': 'searchLink', 'type': 'str'},
            'thumbnail': {'key': 'thumbnail', 'type': 'ImageObject'},
        }

        def __init__(self, *, text: str, **kwargs) -> None:
            super(Query, self).__init__(**kwargs)
            self.text = text
            self.display_text = None
            self.web_search_url = None
            self.search_link = None
            self.thumbnail = None

    class TrendingTopics(Answer):
        """TrendingTopics.

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar follow_up_queries:
        :vartype follow_up_queries:
         list[~azure.cognitiveservices.search.newssearch.models.Query]
        :param value: Required. A list of trending news topics on Bing
        :type value:
         list[~azure.cognitiveservices.search.newssearch.models.NewsTopic]
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'follow_up_queries': {'readonly': True},
            'value': {'required': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'follow_up_queries': {'key': 'followUpQueries', 'type': '[Query]'},
            'value': {'key': 'value', 'type': '[NewsTopic]'},
        }

        def __init__(self, *, value, **kwargs) -> None:
            super(TrendingTopics, self).__init__(**kwargs)
            self.value = value
            self._type = 'TrendingTopics'

    class VideoObject(MediaObject):
        """Defines a video object that is relevant to the query.

        Variables are only populated by the server, and will be ignored when
        sending a request.

        All required parameters must be populated in order to send to Azure.

        :param _type: Required. Constant filled by server.
        :type _type: str
        :ivar id: A String identifier.
        :vartype id: str
        :ivar web_search_url: The URL To Bing's search result for this item.
        :vartype web_search_url: str
        :ivar name: The name of the thing represented by this object.
        :vartype name: str
        :ivar url: The URL to get more information about the thing represented by
         this object.
        :vartype url: str
        :ivar image: An image of the item.
        :vartype image:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        :ivar description: A short description of the item.
        :vartype description: str
        :ivar alternate_name: An alias for the item
        :vartype alternate_name: str
        :ivar bing_id: An ID that uniquely identifies this item.
        :vartype bing_id: str
        :ivar thumbnail_url: The URL to a thumbnail of the item.
        :vartype thumbnail_url: str
        :ivar provider: The source of the creative work.
        :vartype provider:
         list[~azure.cognitiveservices.search.newssearch.models.Thing]
        :ivar date_published: The date on which the CreativeWork was published.
        :vartype date_published: str
        :ivar video: A video of the item.
        :vartype video:
         ~azure.cognitiveservices.search.newssearch.models.VideoObject
        :ivar content_url: Original URL to retrieve the source (file) for the
         media object (e.g the source URL for the image).
        :vartype content_url: str
        :ivar width: The width of the source media object, in pixels.
        :vartype width: int
        :ivar height: The height of the source media object, in pixels.
        :vartype height: int
        :ivar motion_thumbnail_url:
        :vartype motion_thumbnail_url: str
        :ivar motion_thumbnail_id:
        :vartype motion_thumbnail_id: str
        :ivar embed_html:
        :vartype embed_html: str
        :ivar allow_https_embed:
        :vartype allow_https_embed: bool
        :ivar view_count:
        :vartype view_count: int
        :ivar thumbnail:
        :vartype thumbnail:
         ~azure.cognitiveservices.search.newssearch.models.ImageObject
        :ivar video_id:
        :vartype video_id: str
        :ivar allow_mobile_embed:
        :vartype allow_mobile_embed: bool
        :ivar is_superfresh:
        :vartype is_superfresh: bool
        """

        _validation = {
            '_type': {'required': True},
            'id': {'readonly': True},
            'web_search_url': {'readonly': True},
            'name': {'readonly': True},
            'url': {'readonly': True},
            'image': {'readonly': True},
            'description': {'readonly': True},
            'alternate_name': {'readonly': True},
            'bing_id': {'readonly': True},
            'thumbnail_url': {'readonly': True},
            'provider': {'readonly': True},
            'date_published': {'readonly': True},
            'video': {'readonly': True},
            'content_url': {'readonly': True},
            'width': {'readonly': True},
            'height': {'readonly': True},
            'motion_thumbnail_url': {'readonly': True},
            'motion_thumbnail_id': {'readonly': True},
            'embed_html': {'readonly': True},
            'allow_https_embed': {'readonly': True},
            'view_count': {'readonly': True},
            'thumbnail': {'readonly': True},
            'video_id': {'readonly': True},
            'allow_mobile_embed': {'readonly': True},
            'is_superfresh': {'readonly': True},
        }

        _attribute_map = {
            '_type': {'key': '_type', 'type': 'str'},
            'id': {'key': 'id', 'type': 'str'},
            'web_search_url': {'key': 'webSearchUrl', 'type': 'str'},
            'name': {'key': 'name', 'type': 'str'},
            'url': {'key': 'url', 'type': 'str'},
            'image': {'key': 'image', 'type': 'ImageObject'},
            'description': {'key': 'description', 'type': 'str'},
            'alternate_name': {'key': 'alternateName', 'type': 'str'},
            'bing_id': {'key': 'bingId', 'type': 'str'},
            'thumbnail_url': {'key': 'thumbnailUrl', 'type': 'str'},
            'provider': {'key': 'provider', 'type': '[Thing]'},
            'date_published': {'key': 'datePublished', 'type': 'str'},
            'video': {'key': 'video', 'type': 'VideoObject'},
            'content_url': {'key': 'contentUrl', 'type': 'str'},
            'width': {'key': 'width', 'type': 'int'},
            'height': {'key': 'height', 'type': 'int'},
            'motion_thumbnail_url': {'key': 'motionThumbnailUrl', 'type': 'str'},
            'motion_thumbnail_id': {'key': 'motionThumbnailId', 'type': 'str'},
            'embed_html': {'key': 'embedHtml', 'type': 'str'},
            'allow_https_embed': {'key': 'allowHttpsEmbed', 'type': 'bool'},
            'view_count': {'key': 'viewCount', 'type': 'int'},
            'thumbnail': {'key': 'thumbnail', 'type': 'ImageObject'},
            'video_id': {'key': 'videoId', 'type': 'str'},
            'allow_mobile_embed': {'key': 'allowMobileEmbed', 'type': 'bool'},
            'is_superfresh': {'key': 'isSuperfresh', 'type': 'bool'},
        }

        def __init__(self, **kwargs) -> None:
            super(VideoObject, self).__init__(**kwargs)
            self.motion_thumbnail_url = None
            self.motion_thumbnail_id = None
            self.embed_html = None
            self.allow_https_embed = None
            self.view_count = None
            self.thumbnail = None
            self.video_id = None
            self.allow_mobile_embed = None
            self.is_superfresh = None
            self._type = 'VideoObject'