...

Source file src/github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/websearch/models.go

Documentation: github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/websearch

     1  package websearch
     2  
     3  // Copyright (c) Microsoft Corporation. All rights reserved.
     4  // Licensed under the MIT License. See License.txt in the project root for license information.
     5  //
     6  // Code generated by Microsoft (R) AutoRest Code Generator.
     7  // Changes may cause incorrect behavior and will be lost if the code is regenerated.
     8  
     9  import (
    10  	"encoding/json"
    11  	"github.com/Azure/go-autorest/autorest"
    12  )
    13  
    14  // The package's fully qualified name.
    15  const fqdn = "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/websearch"
    16  
    17  // BasicAnswer ...
    18  type BasicAnswer interface {
    19  	AsWebWebAnswer() (*WebWebAnswer, bool)
    20  	AsImages() (*Images, bool)
    21  	AsNews() (*News, bool)
    22  	AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool)
    23  	AsSpellSuggestions() (*SpellSuggestions, bool)
    24  	AsTimeZone() (*TimeZone, bool)
    25  	AsVideos() (*Videos, bool)
    26  	AsComputation() (*Computation, bool)
    27  	AsPlaces() (*Places, bool)
    28  	AsSearchResultsAnswer() (*SearchResultsAnswer, bool)
    29  	AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool)
    30  	AsAnswer() (*Answer, bool)
    31  }
    32  
    33  // Answer ...
    34  type Answer struct {
    35  	// FollowUpQueries - READ-ONLY
    36  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
    37  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
    38  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
    39  	// ID - READ-ONLY; A String identifier.
    40  	ID *string `json:"id,omitempty"`
    41  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
    42  	Type TypeBasicResponseBase `json:"_type,omitempty"`
    43  }
    44  
    45  func unmarshalBasicAnswer(body []byte) (BasicAnswer, error) {
    46  	var m map[string]interface{}
    47  	err := json.Unmarshal(body, &m)
    48  	if err != nil {
    49  		return nil, err
    50  	}
    51  
    52  	switch m["_type"] {
    53  	case string(TypeWebWebAnswer):
    54  		var wwa WebWebAnswer
    55  		err := json.Unmarshal(body, &wwa)
    56  		return wwa, err
    57  	case string(TypeImages):
    58  		var i Images
    59  		err := json.Unmarshal(body, &i)
    60  		return i, err
    61  	case string(TypeNews):
    62  		var n News
    63  		err := json.Unmarshal(body, &n)
    64  		return n, err
    65  	case string(TypeRelatedSearchesRelatedSearchAnswer):
    66  		var rsrsa RelatedSearchesRelatedSearchAnswer
    67  		err := json.Unmarshal(body, &rsrsa)
    68  		return rsrsa, err
    69  	case string(TypeSpellSuggestions):
    70  		var ss SpellSuggestions
    71  		err := json.Unmarshal(body, &ss)
    72  		return ss, err
    73  	case string(TypeTimeZone):
    74  		var tz TimeZone
    75  		err := json.Unmarshal(body, &tz)
    76  		return tz, err
    77  	case string(TypeVideos):
    78  		var vVar Videos
    79  		err := json.Unmarshal(body, &vVar)
    80  		return vVar, err
    81  	case string(TypeComputation):
    82  		var c Computation
    83  		err := json.Unmarshal(body, &c)
    84  		return c, err
    85  	case string(TypePlaces):
    86  		var p Places
    87  		err := json.Unmarshal(body, &p)
    88  		return p, err
    89  	case string(TypeSearchResultsAnswer):
    90  		var sra SearchResultsAnswer
    91  		err := json.Unmarshal(body, &sra)
    92  		return sra, err
    93  	default:
    94  		var a Answer
    95  		err := json.Unmarshal(body, &a)
    96  		return a, err
    97  	}
    98  }
    99  func unmarshalBasicAnswerArray(body []byte) ([]BasicAnswer, error) {
   100  	var rawMessages []*json.RawMessage
   101  	err := json.Unmarshal(body, &rawMessages)
   102  	if err != nil {
   103  		return nil, err
   104  	}
   105  
   106  	aArray := make([]BasicAnswer, len(rawMessages))
   107  
   108  	for index, rawMessage := range rawMessages {
   109  		a, err := unmarshalBasicAnswer(*rawMessage)
   110  		if err != nil {
   111  			return nil, err
   112  		}
   113  		aArray[index] = a
   114  	}
   115  	return aArray, nil
   116  }
   117  
   118  // MarshalJSON is the custom marshaler for Answer.
   119  func (a Answer) MarshalJSON() ([]byte, error) {
   120  	a.Type = TypeAnswer
   121  	objectMap := make(map[string]interface{})
   122  	if a.Type != "" {
   123  		objectMap["_type"] = a.Type
   124  	}
   125  	return json.Marshal(objectMap)
   126  }
   127  
   128  // AsImageObject is the BasicResponseBase implementation for Answer.
   129  func (a Answer) AsImageObject() (*ImageObject, bool) {
   130  	return nil, false
   131  }
   132  
   133  // AsWebPage is the BasicResponseBase implementation for Answer.
   134  func (a Answer) AsWebPage() (*WebPage, bool) {
   135  	return nil, false
   136  }
   137  
   138  // AsWebWebAnswer is the BasicResponseBase implementation for Answer.
   139  func (a Answer) AsWebWebAnswer() (*WebWebAnswer, bool) {
   140  	return nil, false
   141  }
   142  
   143  // AsImages is the BasicResponseBase implementation for Answer.
   144  func (a Answer) AsImages() (*Images, bool) {
   145  	return nil, false
   146  }
   147  
   148  // AsNewsArticle is the BasicResponseBase implementation for Answer.
   149  func (a Answer) AsNewsArticle() (*NewsArticle, bool) {
   150  	return nil, false
   151  }
   152  
   153  // AsNews is the BasicResponseBase implementation for Answer.
   154  func (a Answer) AsNews() (*News, bool) {
   155  	return nil, false
   156  }
   157  
   158  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for Answer.
   159  func (a Answer) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
   160  	return nil, false
   161  }
   162  
   163  // AsSpellSuggestions is the BasicResponseBase implementation for Answer.
   164  func (a Answer) AsSpellSuggestions() (*SpellSuggestions, bool) {
   165  	return nil, false
   166  }
   167  
   168  // AsTimeZone is the BasicResponseBase implementation for Answer.
   169  func (a Answer) AsTimeZone() (*TimeZone, bool) {
   170  	return nil, false
   171  }
   172  
   173  // AsVideoObject is the BasicResponseBase implementation for Answer.
   174  func (a Answer) AsVideoObject() (*VideoObject, bool) {
   175  	return nil, false
   176  }
   177  
   178  // AsVideos is the BasicResponseBase implementation for Answer.
   179  func (a Answer) AsVideos() (*Videos, bool) {
   180  	return nil, false
   181  }
   182  
   183  // AsComputation is the BasicResponseBase implementation for Answer.
   184  func (a Answer) AsComputation() (*Computation, bool) {
   185  	return nil, false
   186  }
   187  
   188  // AsIdentifiable is the BasicResponseBase implementation for Answer.
   189  func (a Answer) AsIdentifiable() (*Identifiable, bool) {
   190  	return nil, false
   191  }
   192  
   193  // AsBasicIdentifiable is the BasicResponseBase implementation for Answer.
   194  func (a Answer) AsBasicIdentifiable() (BasicIdentifiable, bool) {
   195  	return &a, true
   196  }
   197  
   198  // AsSearchResponse is the BasicResponseBase implementation for Answer.
   199  func (a Answer) AsSearchResponse() (*SearchResponse, bool) {
   200  	return nil, false
   201  }
   202  
   203  // AsResponse is the BasicResponseBase implementation for Answer.
   204  func (a Answer) AsResponse() (*Response, bool) {
   205  	return nil, false
   206  }
   207  
   208  // AsBasicResponse is the BasicResponseBase implementation for Answer.
   209  func (a Answer) AsBasicResponse() (BasicResponse, bool) {
   210  	return &a, true
   211  }
   212  
   213  // AsThing is the BasicResponseBase implementation for Answer.
   214  func (a Answer) AsThing() (*Thing, bool) {
   215  	return nil, false
   216  }
   217  
   218  // AsBasicThing is the BasicResponseBase implementation for Answer.
   219  func (a Answer) AsBasicThing() (BasicThing, bool) {
   220  	return nil, false
   221  }
   222  
   223  // AsPlaces is the BasicResponseBase implementation for Answer.
   224  func (a Answer) AsPlaces() (*Places, bool) {
   225  	return nil, false
   226  }
   227  
   228  // AsSearchResultsAnswer is the BasicResponseBase implementation for Answer.
   229  func (a Answer) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
   230  	return nil, false
   231  }
   232  
   233  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Answer.
   234  func (a Answer) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
   235  	return nil, false
   236  }
   237  
   238  // AsAnswer is the BasicResponseBase implementation for Answer.
   239  func (a Answer) AsAnswer() (*Answer, bool) {
   240  	return &a, true
   241  }
   242  
   243  // AsBasicAnswer is the BasicResponseBase implementation for Answer.
   244  func (a Answer) AsBasicAnswer() (BasicAnswer, bool) {
   245  	return &a, true
   246  }
   247  
   248  // AsErrorResponse is the BasicResponseBase implementation for Answer.
   249  func (a Answer) AsErrorResponse() (*ErrorResponse, bool) {
   250  	return nil, false
   251  }
   252  
   253  // AsCreativeWork is the BasicResponseBase implementation for Answer.
   254  func (a Answer) AsCreativeWork() (*CreativeWork, bool) {
   255  	return nil, false
   256  }
   257  
   258  // AsBasicCreativeWork is the BasicResponseBase implementation for Answer.
   259  func (a Answer) AsBasicCreativeWork() (BasicCreativeWork, bool) {
   260  	return nil, false
   261  }
   262  
   263  // AsIntangible is the BasicResponseBase implementation for Answer.
   264  func (a Answer) AsIntangible() (*Intangible, bool) {
   265  	return nil, false
   266  }
   267  
   268  // AsBasicIntangible is the BasicResponseBase implementation for Answer.
   269  func (a Answer) AsBasicIntangible() (BasicIntangible, bool) {
   270  	return nil, false
   271  }
   272  
   273  // AsMediaObject is the BasicResponseBase implementation for Answer.
   274  func (a Answer) AsMediaObject() (*MediaObject, bool) {
   275  	return nil, false
   276  }
   277  
   278  // AsBasicMediaObject is the BasicResponseBase implementation for Answer.
   279  func (a Answer) AsBasicMediaObject() (BasicMediaObject, bool) {
   280  	return nil, false
   281  }
   282  
   283  // AsArticle is the BasicResponseBase implementation for Answer.
   284  func (a Answer) AsArticle() (*Article, bool) {
   285  	return nil, false
   286  }
   287  
   288  // AsBasicArticle is the BasicResponseBase implementation for Answer.
   289  func (a Answer) AsBasicArticle() (BasicArticle, bool) {
   290  	return nil, false
   291  }
   292  
   293  // AsStructuredValue is the BasicResponseBase implementation for Answer.
   294  func (a Answer) AsStructuredValue() (*StructuredValue, bool) {
   295  	return nil, false
   296  }
   297  
   298  // AsResponseBase is the BasicResponseBase implementation for Answer.
   299  func (a Answer) AsResponseBase() (*ResponseBase, bool) {
   300  	return nil, false
   301  }
   302  
   303  // AsBasicResponseBase is the BasicResponseBase implementation for Answer.
   304  func (a Answer) AsBasicResponseBase() (BasicResponseBase, bool) {
   305  	return &a, true
   306  }
   307  
   308  // BasicArticle ...
   309  type BasicArticle interface {
   310  	AsNewsArticle() (*NewsArticle, bool)
   311  	AsArticle() (*Article, bool)
   312  }
   313  
   314  // Article ...
   315  type Article struct {
   316  	// WordCount - READ-ONLY; The number of words in the text of the Article.
   317  	WordCount *int32 `json:"wordCount,omitempty"`
   318  	// ThumbnailURL - READ-ONLY; The URL to a thumbnail of the item.
   319  	ThumbnailURL *string `json:"thumbnailUrl,omitempty"`
   320  	// Provider - READ-ONLY; The source of the creative work.
   321  	Provider *[]BasicThing `json:"provider,omitempty"`
   322  	// Text - READ-ONLY
   323  	Text *string `json:"text,omitempty"`
   324  	// Name - READ-ONLY; The name of the thing represented by this object.
   325  	Name *string `json:"name,omitempty"`
   326  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
   327  	URL *string `json:"url,omitempty"`
   328  	// Image - READ-ONLY
   329  	Image *ImageObject `json:"image,omitempty"`
   330  	// Description - READ-ONLY; A short description of the item.
   331  	Description *string `json:"description,omitempty"`
   332  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
   333  	BingID *string `json:"bingId,omitempty"`
   334  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
   335  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
   336  	// ID - READ-ONLY; A String identifier.
   337  	ID *string `json:"id,omitempty"`
   338  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
   339  	Type TypeBasicResponseBase `json:"_type,omitempty"`
   340  }
   341  
   342  func unmarshalBasicArticle(body []byte) (BasicArticle, error) {
   343  	var m map[string]interface{}
   344  	err := json.Unmarshal(body, &m)
   345  	if err != nil {
   346  		return nil, err
   347  	}
   348  
   349  	switch m["_type"] {
   350  	case string(TypeNewsArticle):
   351  		var na NewsArticle
   352  		err := json.Unmarshal(body, &na)
   353  		return na, err
   354  	default:
   355  		var a Article
   356  		err := json.Unmarshal(body, &a)
   357  		return a, err
   358  	}
   359  }
   360  func unmarshalBasicArticleArray(body []byte) ([]BasicArticle, error) {
   361  	var rawMessages []*json.RawMessage
   362  	err := json.Unmarshal(body, &rawMessages)
   363  	if err != nil {
   364  		return nil, err
   365  	}
   366  
   367  	aArray := make([]BasicArticle, len(rawMessages))
   368  
   369  	for index, rawMessage := range rawMessages {
   370  		a, err := unmarshalBasicArticle(*rawMessage)
   371  		if err != nil {
   372  			return nil, err
   373  		}
   374  		aArray[index] = a
   375  	}
   376  	return aArray, nil
   377  }
   378  
   379  // MarshalJSON is the custom marshaler for Article.
   380  func (a Article) MarshalJSON() ([]byte, error) {
   381  	a.Type = TypeArticle
   382  	objectMap := make(map[string]interface{})
   383  	if a.Type != "" {
   384  		objectMap["_type"] = a.Type
   385  	}
   386  	return json.Marshal(objectMap)
   387  }
   388  
   389  // AsImageObject is the BasicResponseBase implementation for Article.
   390  func (a Article) AsImageObject() (*ImageObject, bool) {
   391  	return nil, false
   392  }
   393  
   394  // AsWebPage is the BasicResponseBase implementation for Article.
   395  func (a Article) AsWebPage() (*WebPage, bool) {
   396  	return nil, false
   397  }
   398  
   399  // AsWebWebAnswer is the BasicResponseBase implementation for Article.
   400  func (a Article) AsWebWebAnswer() (*WebWebAnswer, bool) {
   401  	return nil, false
   402  }
   403  
   404  // AsImages is the BasicResponseBase implementation for Article.
   405  func (a Article) AsImages() (*Images, bool) {
   406  	return nil, false
   407  }
   408  
   409  // AsNewsArticle is the BasicResponseBase implementation for Article.
   410  func (a Article) AsNewsArticle() (*NewsArticle, bool) {
   411  	return nil, false
   412  }
   413  
   414  // AsNews is the BasicResponseBase implementation for Article.
   415  func (a Article) AsNews() (*News, bool) {
   416  	return nil, false
   417  }
   418  
   419  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for Article.
   420  func (a Article) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
   421  	return nil, false
   422  }
   423  
   424  // AsSpellSuggestions is the BasicResponseBase implementation for Article.
   425  func (a Article) AsSpellSuggestions() (*SpellSuggestions, bool) {
   426  	return nil, false
   427  }
   428  
   429  // AsTimeZone is the BasicResponseBase implementation for Article.
   430  func (a Article) AsTimeZone() (*TimeZone, bool) {
   431  	return nil, false
   432  }
   433  
   434  // AsVideoObject is the BasicResponseBase implementation for Article.
   435  func (a Article) AsVideoObject() (*VideoObject, bool) {
   436  	return nil, false
   437  }
   438  
   439  // AsVideos is the BasicResponseBase implementation for Article.
   440  func (a Article) AsVideos() (*Videos, bool) {
   441  	return nil, false
   442  }
   443  
   444  // AsComputation is the BasicResponseBase implementation for Article.
   445  func (a Article) AsComputation() (*Computation, bool) {
   446  	return nil, false
   447  }
   448  
   449  // AsIdentifiable is the BasicResponseBase implementation for Article.
   450  func (a Article) AsIdentifiable() (*Identifiable, bool) {
   451  	return nil, false
   452  }
   453  
   454  // AsBasicIdentifiable is the BasicResponseBase implementation for Article.
   455  func (a Article) AsBasicIdentifiable() (BasicIdentifiable, bool) {
   456  	return &a, true
   457  }
   458  
   459  // AsSearchResponse is the BasicResponseBase implementation for Article.
   460  func (a Article) AsSearchResponse() (*SearchResponse, bool) {
   461  	return nil, false
   462  }
   463  
   464  // AsResponse is the BasicResponseBase implementation for Article.
   465  func (a Article) AsResponse() (*Response, bool) {
   466  	return nil, false
   467  }
   468  
   469  // AsBasicResponse is the BasicResponseBase implementation for Article.
   470  func (a Article) AsBasicResponse() (BasicResponse, bool) {
   471  	return &a, true
   472  }
   473  
   474  // AsThing is the BasicResponseBase implementation for Article.
   475  func (a Article) AsThing() (*Thing, bool) {
   476  	return nil, false
   477  }
   478  
   479  // AsBasicThing is the BasicResponseBase implementation for Article.
   480  func (a Article) AsBasicThing() (BasicThing, bool) {
   481  	return &a, true
   482  }
   483  
   484  // AsPlaces is the BasicResponseBase implementation for Article.
   485  func (a Article) AsPlaces() (*Places, bool) {
   486  	return nil, false
   487  }
   488  
   489  // AsSearchResultsAnswer is the BasicResponseBase implementation for Article.
   490  func (a Article) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
   491  	return nil, false
   492  }
   493  
   494  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Article.
   495  func (a Article) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
   496  	return nil, false
   497  }
   498  
   499  // AsAnswer is the BasicResponseBase implementation for Article.
   500  func (a Article) AsAnswer() (*Answer, bool) {
   501  	return nil, false
   502  }
   503  
   504  // AsBasicAnswer is the BasicResponseBase implementation for Article.
   505  func (a Article) AsBasicAnswer() (BasicAnswer, bool) {
   506  	return nil, false
   507  }
   508  
   509  // AsErrorResponse is the BasicResponseBase implementation for Article.
   510  func (a Article) AsErrorResponse() (*ErrorResponse, bool) {
   511  	return nil, false
   512  }
   513  
   514  // AsCreativeWork is the BasicResponseBase implementation for Article.
   515  func (a Article) AsCreativeWork() (*CreativeWork, bool) {
   516  	return nil, false
   517  }
   518  
   519  // AsBasicCreativeWork is the BasicResponseBase implementation for Article.
   520  func (a Article) AsBasicCreativeWork() (BasicCreativeWork, bool) {
   521  	return &a, true
   522  }
   523  
   524  // AsIntangible is the BasicResponseBase implementation for Article.
   525  func (a Article) AsIntangible() (*Intangible, bool) {
   526  	return nil, false
   527  }
   528  
   529  // AsBasicIntangible is the BasicResponseBase implementation for Article.
   530  func (a Article) AsBasicIntangible() (BasicIntangible, bool) {
   531  	return nil, false
   532  }
   533  
   534  // AsMediaObject is the BasicResponseBase implementation for Article.
   535  func (a Article) AsMediaObject() (*MediaObject, bool) {
   536  	return nil, false
   537  }
   538  
   539  // AsBasicMediaObject is the BasicResponseBase implementation for Article.
   540  func (a Article) AsBasicMediaObject() (BasicMediaObject, bool) {
   541  	return nil, false
   542  }
   543  
   544  // AsArticle is the BasicResponseBase implementation for Article.
   545  func (a Article) AsArticle() (*Article, bool) {
   546  	return &a, true
   547  }
   548  
   549  // AsBasicArticle is the BasicResponseBase implementation for Article.
   550  func (a Article) AsBasicArticle() (BasicArticle, bool) {
   551  	return &a, true
   552  }
   553  
   554  // AsStructuredValue is the BasicResponseBase implementation for Article.
   555  func (a Article) AsStructuredValue() (*StructuredValue, bool) {
   556  	return nil, false
   557  }
   558  
   559  // AsResponseBase is the BasicResponseBase implementation for Article.
   560  func (a Article) AsResponseBase() (*ResponseBase, bool) {
   561  	return nil, false
   562  }
   563  
   564  // AsBasicResponseBase is the BasicResponseBase implementation for Article.
   565  func (a Article) AsBasicResponseBase() (BasicResponseBase, bool) {
   566  	return &a, true
   567  }
   568  
   569  // UnmarshalJSON is the custom unmarshaler for Article struct.
   570  func (a *Article) UnmarshalJSON(body []byte) error {
   571  	var m map[string]*json.RawMessage
   572  	err := json.Unmarshal(body, &m)
   573  	if err != nil {
   574  		return err
   575  	}
   576  	for k, v := range m {
   577  		switch k {
   578  		case "wordCount":
   579  			if v != nil {
   580  				var wordCount int32
   581  				err = json.Unmarshal(*v, &wordCount)
   582  				if err != nil {
   583  					return err
   584  				}
   585  				a.WordCount = &wordCount
   586  			}
   587  		case "thumbnailUrl":
   588  			if v != nil {
   589  				var thumbnailURL string
   590  				err = json.Unmarshal(*v, &thumbnailURL)
   591  				if err != nil {
   592  					return err
   593  				}
   594  				a.ThumbnailURL = &thumbnailURL
   595  			}
   596  		case "provider":
   597  			if v != nil {
   598  				provider, err := unmarshalBasicThingArray(*v)
   599  				if err != nil {
   600  					return err
   601  				}
   602  				a.Provider = &provider
   603  			}
   604  		case "text":
   605  			if v != nil {
   606  				var textVar string
   607  				err = json.Unmarshal(*v, &textVar)
   608  				if err != nil {
   609  					return err
   610  				}
   611  				a.Text = &textVar
   612  			}
   613  		case "name":
   614  			if v != nil {
   615  				var name string
   616  				err = json.Unmarshal(*v, &name)
   617  				if err != nil {
   618  					return err
   619  				}
   620  				a.Name = &name
   621  			}
   622  		case "url":
   623  			if v != nil {
   624  				var URL string
   625  				err = json.Unmarshal(*v, &URL)
   626  				if err != nil {
   627  					return err
   628  				}
   629  				a.URL = &URL
   630  			}
   631  		case "image":
   632  			if v != nil {
   633  				var imageVar ImageObject
   634  				err = json.Unmarshal(*v, &imageVar)
   635  				if err != nil {
   636  					return err
   637  				}
   638  				a.Image = &imageVar
   639  			}
   640  		case "description":
   641  			if v != nil {
   642  				var description string
   643  				err = json.Unmarshal(*v, &description)
   644  				if err != nil {
   645  					return err
   646  				}
   647  				a.Description = &description
   648  			}
   649  		case "bingId":
   650  			if v != nil {
   651  				var bingID string
   652  				err = json.Unmarshal(*v, &bingID)
   653  				if err != nil {
   654  					return err
   655  				}
   656  				a.BingID = &bingID
   657  			}
   658  		case "webSearchUrl":
   659  			if v != nil {
   660  				var webSearchURL string
   661  				err = json.Unmarshal(*v, &webSearchURL)
   662  				if err != nil {
   663  					return err
   664  				}
   665  				a.WebSearchURL = &webSearchURL
   666  			}
   667  		case "id":
   668  			if v != nil {
   669  				var ID string
   670  				err = json.Unmarshal(*v, &ID)
   671  				if err != nil {
   672  					return err
   673  				}
   674  				a.ID = &ID
   675  			}
   676  		case "_type":
   677  			if v != nil {
   678  				var typeVar TypeBasicResponseBase
   679  				err = json.Unmarshal(*v, &typeVar)
   680  				if err != nil {
   681  					return err
   682  				}
   683  				a.Type = typeVar
   684  			}
   685  		}
   686  	}
   687  
   688  	return nil
   689  }
   690  
   691  // Computation defines an expression and its answer
   692  type Computation struct {
   693  	// Expression - The math or conversion expression. If the query contains a request to convert units of measure (for example, meters to feet), this field contains the from units and value contains the to units. If the query contains a mathematical expression such as 2+2, this field contains the expression and value contains the answer. Note that mathematical expressions may be normalized. For example, if the query was sqrt(4^2+8^2), the normalized expression may be sqrt((4^2)+(8^2)). If the user's query is a math question and the textDecorations query parameter is set to true, the expression string may include formatting markers. For example, if the user's query is log(2), the normalized expression includes the subscript markers. For more information, see Hit Highlighting.
   694  	Expression *string `json:"expression,omitempty"`
   695  	// Value - The expression's answer.
   696  	Value *string `json:"value,omitempty"`
   697  	// FollowUpQueries - READ-ONLY
   698  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
   699  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
   700  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
   701  	// ID - READ-ONLY; A String identifier.
   702  	ID *string `json:"id,omitempty"`
   703  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
   704  	Type TypeBasicResponseBase `json:"_type,omitempty"`
   705  }
   706  
   707  // MarshalJSON is the custom marshaler for Computation.
   708  func (c Computation) MarshalJSON() ([]byte, error) {
   709  	c.Type = TypeComputation
   710  	objectMap := make(map[string]interface{})
   711  	if c.Expression != nil {
   712  		objectMap["expression"] = c.Expression
   713  	}
   714  	if c.Value != nil {
   715  		objectMap["value"] = c.Value
   716  	}
   717  	if c.Type != "" {
   718  		objectMap["_type"] = c.Type
   719  	}
   720  	return json.Marshal(objectMap)
   721  }
   722  
   723  // AsImageObject is the BasicResponseBase implementation for Computation.
   724  func (c Computation) AsImageObject() (*ImageObject, bool) {
   725  	return nil, false
   726  }
   727  
   728  // AsWebPage is the BasicResponseBase implementation for Computation.
   729  func (c Computation) AsWebPage() (*WebPage, bool) {
   730  	return nil, false
   731  }
   732  
   733  // AsWebWebAnswer is the BasicResponseBase implementation for Computation.
   734  func (c Computation) AsWebWebAnswer() (*WebWebAnswer, bool) {
   735  	return nil, false
   736  }
   737  
   738  // AsImages is the BasicResponseBase implementation for Computation.
   739  func (c Computation) AsImages() (*Images, bool) {
   740  	return nil, false
   741  }
   742  
   743  // AsNewsArticle is the BasicResponseBase implementation for Computation.
   744  func (c Computation) AsNewsArticle() (*NewsArticle, bool) {
   745  	return nil, false
   746  }
   747  
   748  // AsNews is the BasicResponseBase implementation for Computation.
   749  func (c Computation) AsNews() (*News, bool) {
   750  	return nil, false
   751  }
   752  
   753  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for Computation.
   754  func (c Computation) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
   755  	return nil, false
   756  }
   757  
   758  // AsSpellSuggestions is the BasicResponseBase implementation for Computation.
   759  func (c Computation) AsSpellSuggestions() (*SpellSuggestions, bool) {
   760  	return nil, false
   761  }
   762  
   763  // AsTimeZone is the BasicResponseBase implementation for Computation.
   764  func (c Computation) AsTimeZone() (*TimeZone, bool) {
   765  	return nil, false
   766  }
   767  
   768  // AsVideoObject is the BasicResponseBase implementation for Computation.
   769  func (c Computation) AsVideoObject() (*VideoObject, bool) {
   770  	return nil, false
   771  }
   772  
   773  // AsVideos is the BasicResponseBase implementation for Computation.
   774  func (c Computation) AsVideos() (*Videos, bool) {
   775  	return nil, false
   776  }
   777  
   778  // AsComputation is the BasicResponseBase implementation for Computation.
   779  func (c Computation) AsComputation() (*Computation, bool) {
   780  	return &c, true
   781  }
   782  
   783  // AsIdentifiable is the BasicResponseBase implementation for Computation.
   784  func (c Computation) AsIdentifiable() (*Identifiable, bool) {
   785  	return nil, false
   786  }
   787  
   788  // AsBasicIdentifiable is the BasicResponseBase implementation for Computation.
   789  func (c Computation) AsBasicIdentifiable() (BasicIdentifiable, bool) {
   790  	return &c, true
   791  }
   792  
   793  // AsSearchResponse is the BasicResponseBase implementation for Computation.
   794  func (c Computation) AsSearchResponse() (*SearchResponse, bool) {
   795  	return nil, false
   796  }
   797  
   798  // AsResponse is the BasicResponseBase implementation for Computation.
   799  func (c Computation) AsResponse() (*Response, bool) {
   800  	return nil, false
   801  }
   802  
   803  // AsBasicResponse is the BasicResponseBase implementation for Computation.
   804  func (c Computation) AsBasicResponse() (BasicResponse, bool) {
   805  	return &c, true
   806  }
   807  
   808  // AsThing is the BasicResponseBase implementation for Computation.
   809  func (c Computation) AsThing() (*Thing, bool) {
   810  	return nil, false
   811  }
   812  
   813  // AsBasicThing is the BasicResponseBase implementation for Computation.
   814  func (c Computation) AsBasicThing() (BasicThing, bool) {
   815  	return nil, false
   816  }
   817  
   818  // AsPlaces is the BasicResponseBase implementation for Computation.
   819  func (c Computation) AsPlaces() (*Places, bool) {
   820  	return nil, false
   821  }
   822  
   823  // AsSearchResultsAnswer is the BasicResponseBase implementation for Computation.
   824  func (c Computation) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
   825  	return nil, false
   826  }
   827  
   828  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Computation.
   829  func (c Computation) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
   830  	return nil, false
   831  }
   832  
   833  // AsAnswer is the BasicResponseBase implementation for Computation.
   834  func (c Computation) AsAnswer() (*Answer, bool) {
   835  	return nil, false
   836  }
   837  
   838  // AsBasicAnswer is the BasicResponseBase implementation for Computation.
   839  func (c Computation) AsBasicAnswer() (BasicAnswer, bool) {
   840  	return &c, true
   841  }
   842  
   843  // AsErrorResponse is the BasicResponseBase implementation for Computation.
   844  func (c Computation) AsErrorResponse() (*ErrorResponse, bool) {
   845  	return nil, false
   846  }
   847  
   848  // AsCreativeWork is the BasicResponseBase implementation for Computation.
   849  func (c Computation) AsCreativeWork() (*CreativeWork, bool) {
   850  	return nil, false
   851  }
   852  
   853  // AsBasicCreativeWork is the BasicResponseBase implementation for Computation.
   854  func (c Computation) AsBasicCreativeWork() (BasicCreativeWork, bool) {
   855  	return nil, false
   856  }
   857  
   858  // AsIntangible is the BasicResponseBase implementation for Computation.
   859  func (c Computation) AsIntangible() (*Intangible, bool) {
   860  	return nil, false
   861  }
   862  
   863  // AsBasicIntangible is the BasicResponseBase implementation for Computation.
   864  func (c Computation) AsBasicIntangible() (BasicIntangible, bool) {
   865  	return nil, false
   866  }
   867  
   868  // AsMediaObject is the BasicResponseBase implementation for Computation.
   869  func (c Computation) AsMediaObject() (*MediaObject, bool) {
   870  	return nil, false
   871  }
   872  
   873  // AsBasicMediaObject is the BasicResponseBase implementation for Computation.
   874  func (c Computation) AsBasicMediaObject() (BasicMediaObject, bool) {
   875  	return nil, false
   876  }
   877  
   878  // AsArticle is the BasicResponseBase implementation for Computation.
   879  func (c Computation) AsArticle() (*Article, bool) {
   880  	return nil, false
   881  }
   882  
   883  // AsBasicArticle is the BasicResponseBase implementation for Computation.
   884  func (c Computation) AsBasicArticle() (BasicArticle, bool) {
   885  	return nil, false
   886  }
   887  
   888  // AsStructuredValue is the BasicResponseBase implementation for Computation.
   889  func (c Computation) AsStructuredValue() (*StructuredValue, bool) {
   890  	return nil, false
   891  }
   892  
   893  // AsResponseBase is the BasicResponseBase implementation for Computation.
   894  func (c Computation) AsResponseBase() (*ResponseBase, bool) {
   895  	return nil, false
   896  }
   897  
   898  // AsBasicResponseBase is the BasicResponseBase implementation for Computation.
   899  func (c Computation) AsBasicResponseBase() (BasicResponseBase, bool) {
   900  	return &c, true
   901  }
   902  
   903  // BasicCreativeWork ...
   904  type BasicCreativeWork interface {
   905  	AsImageObject() (*ImageObject, bool)
   906  	AsWebPage() (*WebPage, bool)
   907  	AsNewsArticle() (*NewsArticle, bool)
   908  	AsVideoObject() (*VideoObject, bool)
   909  	AsMediaObject() (*MediaObject, bool)
   910  	AsBasicMediaObject() (BasicMediaObject, bool)
   911  	AsArticle() (*Article, bool)
   912  	AsBasicArticle() (BasicArticle, bool)
   913  	AsCreativeWork() (*CreativeWork, bool)
   914  }
   915  
   916  // CreativeWork ...
   917  type CreativeWork struct {
   918  	// ThumbnailURL - READ-ONLY; The URL to a thumbnail of the item.
   919  	ThumbnailURL *string `json:"thumbnailUrl,omitempty"`
   920  	// Provider - READ-ONLY; The source of the creative work.
   921  	Provider *[]BasicThing `json:"provider,omitempty"`
   922  	// Text - READ-ONLY
   923  	Text *string `json:"text,omitempty"`
   924  	// Name - READ-ONLY; The name of the thing represented by this object.
   925  	Name *string `json:"name,omitempty"`
   926  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
   927  	URL *string `json:"url,omitempty"`
   928  	// Image - READ-ONLY
   929  	Image *ImageObject `json:"image,omitempty"`
   930  	// Description - READ-ONLY; A short description of the item.
   931  	Description *string `json:"description,omitempty"`
   932  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
   933  	BingID *string `json:"bingId,omitempty"`
   934  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
   935  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
   936  	// ID - READ-ONLY; A String identifier.
   937  	ID *string `json:"id,omitempty"`
   938  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
   939  	Type TypeBasicResponseBase `json:"_type,omitempty"`
   940  }
   941  
   942  func unmarshalBasicCreativeWork(body []byte) (BasicCreativeWork, error) {
   943  	var m map[string]interface{}
   944  	err := json.Unmarshal(body, &m)
   945  	if err != nil {
   946  		return nil, err
   947  	}
   948  
   949  	switch m["_type"] {
   950  	case string(TypeImageObject):
   951  		var ioVar ImageObject
   952  		err := json.Unmarshal(body, &ioVar)
   953  		return ioVar, err
   954  	case string(TypeWebPage):
   955  		var wp WebPage
   956  		err := json.Unmarshal(body, &wp)
   957  		return wp, err
   958  	case string(TypeNewsArticle):
   959  		var na NewsArticle
   960  		err := json.Unmarshal(body, &na)
   961  		return na, err
   962  	case string(TypeVideoObject):
   963  		var vo VideoObject
   964  		err := json.Unmarshal(body, &vo)
   965  		return vo, err
   966  	case string(TypeMediaObject):
   967  		var mo MediaObject
   968  		err := json.Unmarshal(body, &mo)
   969  		return mo, err
   970  	case string(TypeArticle):
   971  		var a Article
   972  		err := json.Unmarshal(body, &a)
   973  		return a, err
   974  	default:
   975  		var cw CreativeWork
   976  		err := json.Unmarshal(body, &cw)
   977  		return cw, err
   978  	}
   979  }
   980  func unmarshalBasicCreativeWorkArray(body []byte) ([]BasicCreativeWork, error) {
   981  	var rawMessages []*json.RawMessage
   982  	err := json.Unmarshal(body, &rawMessages)
   983  	if err != nil {
   984  		return nil, err
   985  	}
   986  
   987  	cwArray := make([]BasicCreativeWork, len(rawMessages))
   988  
   989  	for index, rawMessage := range rawMessages {
   990  		cw, err := unmarshalBasicCreativeWork(*rawMessage)
   991  		if err != nil {
   992  			return nil, err
   993  		}
   994  		cwArray[index] = cw
   995  	}
   996  	return cwArray, nil
   997  }
   998  
   999  // MarshalJSON is the custom marshaler for CreativeWork.
  1000  func (cw CreativeWork) MarshalJSON() ([]byte, error) {
  1001  	cw.Type = TypeCreativeWork
  1002  	objectMap := make(map[string]interface{})
  1003  	if cw.Type != "" {
  1004  		objectMap["_type"] = cw.Type
  1005  	}
  1006  	return json.Marshal(objectMap)
  1007  }
  1008  
  1009  // AsImageObject is the BasicResponseBase implementation for CreativeWork.
  1010  func (cw CreativeWork) AsImageObject() (*ImageObject, bool) {
  1011  	return nil, false
  1012  }
  1013  
  1014  // AsWebPage is the BasicResponseBase implementation for CreativeWork.
  1015  func (cw CreativeWork) AsWebPage() (*WebPage, bool) {
  1016  	return nil, false
  1017  }
  1018  
  1019  // AsWebWebAnswer is the BasicResponseBase implementation for CreativeWork.
  1020  func (cw CreativeWork) AsWebWebAnswer() (*WebWebAnswer, bool) {
  1021  	return nil, false
  1022  }
  1023  
  1024  // AsImages is the BasicResponseBase implementation for CreativeWork.
  1025  func (cw CreativeWork) AsImages() (*Images, bool) {
  1026  	return nil, false
  1027  }
  1028  
  1029  // AsNewsArticle is the BasicResponseBase implementation for CreativeWork.
  1030  func (cw CreativeWork) AsNewsArticle() (*NewsArticle, bool) {
  1031  	return nil, false
  1032  }
  1033  
  1034  // AsNews is the BasicResponseBase implementation for CreativeWork.
  1035  func (cw CreativeWork) AsNews() (*News, bool) {
  1036  	return nil, false
  1037  }
  1038  
  1039  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for CreativeWork.
  1040  func (cw CreativeWork) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  1041  	return nil, false
  1042  }
  1043  
  1044  // AsSpellSuggestions is the BasicResponseBase implementation for CreativeWork.
  1045  func (cw CreativeWork) AsSpellSuggestions() (*SpellSuggestions, bool) {
  1046  	return nil, false
  1047  }
  1048  
  1049  // AsTimeZone is the BasicResponseBase implementation for CreativeWork.
  1050  func (cw CreativeWork) AsTimeZone() (*TimeZone, bool) {
  1051  	return nil, false
  1052  }
  1053  
  1054  // AsVideoObject is the BasicResponseBase implementation for CreativeWork.
  1055  func (cw CreativeWork) AsVideoObject() (*VideoObject, bool) {
  1056  	return nil, false
  1057  }
  1058  
  1059  // AsVideos is the BasicResponseBase implementation for CreativeWork.
  1060  func (cw CreativeWork) AsVideos() (*Videos, bool) {
  1061  	return nil, false
  1062  }
  1063  
  1064  // AsComputation is the BasicResponseBase implementation for CreativeWork.
  1065  func (cw CreativeWork) AsComputation() (*Computation, bool) {
  1066  	return nil, false
  1067  }
  1068  
  1069  // AsIdentifiable is the BasicResponseBase implementation for CreativeWork.
  1070  func (cw CreativeWork) AsIdentifiable() (*Identifiable, bool) {
  1071  	return nil, false
  1072  }
  1073  
  1074  // AsBasicIdentifiable is the BasicResponseBase implementation for CreativeWork.
  1075  func (cw CreativeWork) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  1076  	return &cw, true
  1077  }
  1078  
  1079  // AsSearchResponse is the BasicResponseBase implementation for CreativeWork.
  1080  func (cw CreativeWork) AsSearchResponse() (*SearchResponse, bool) {
  1081  	return nil, false
  1082  }
  1083  
  1084  // AsResponse is the BasicResponseBase implementation for CreativeWork.
  1085  func (cw CreativeWork) AsResponse() (*Response, bool) {
  1086  	return nil, false
  1087  }
  1088  
  1089  // AsBasicResponse is the BasicResponseBase implementation for CreativeWork.
  1090  func (cw CreativeWork) AsBasicResponse() (BasicResponse, bool) {
  1091  	return &cw, true
  1092  }
  1093  
  1094  // AsThing is the BasicResponseBase implementation for CreativeWork.
  1095  func (cw CreativeWork) AsThing() (*Thing, bool) {
  1096  	return nil, false
  1097  }
  1098  
  1099  // AsBasicThing is the BasicResponseBase implementation for CreativeWork.
  1100  func (cw CreativeWork) AsBasicThing() (BasicThing, bool) {
  1101  	return &cw, true
  1102  }
  1103  
  1104  // AsPlaces is the BasicResponseBase implementation for CreativeWork.
  1105  func (cw CreativeWork) AsPlaces() (*Places, bool) {
  1106  	return nil, false
  1107  }
  1108  
  1109  // AsSearchResultsAnswer is the BasicResponseBase implementation for CreativeWork.
  1110  func (cw CreativeWork) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  1111  	return nil, false
  1112  }
  1113  
  1114  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for CreativeWork.
  1115  func (cw CreativeWork) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  1116  	return nil, false
  1117  }
  1118  
  1119  // AsAnswer is the BasicResponseBase implementation for CreativeWork.
  1120  func (cw CreativeWork) AsAnswer() (*Answer, bool) {
  1121  	return nil, false
  1122  }
  1123  
  1124  // AsBasicAnswer is the BasicResponseBase implementation for CreativeWork.
  1125  func (cw CreativeWork) AsBasicAnswer() (BasicAnswer, bool) {
  1126  	return nil, false
  1127  }
  1128  
  1129  // AsErrorResponse is the BasicResponseBase implementation for CreativeWork.
  1130  func (cw CreativeWork) AsErrorResponse() (*ErrorResponse, bool) {
  1131  	return nil, false
  1132  }
  1133  
  1134  // AsCreativeWork is the BasicResponseBase implementation for CreativeWork.
  1135  func (cw CreativeWork) AsCreativeWork() (*CreativeWork, bool) {
  1136  	return &cw, true
  1137  }
  1138  
  1139  // AsBasicCreativeWork is the BasicResponseBase implementation for CreativeWork.
  1140  func (cw CreativeWork) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  1141  	return &cw, true
  1142  }
  1143  
  1144  // AsIntangible is the BasicResponseBase implementation for CreativeWork.
  1145  func (cw CreativeWork) AsIntangible() (*Intangible, bool) {
  1146  	return nil, false
  1147  }
  1148  
  1149  // AsBasicIntangible is the BasicResponseBase implementation for CreativeWork.
  1150  func (cw CreativeWork) AsBasicIntangible() (BasicIntangible, bool) {
  1151  	return nil, false
  1152  }
  1153  
  1154  // AsMediaObject is the BasicResponseBase implementation for CreativeWork.
  1155  func (cw CreativeWork) AsMediaObject() (*MediaObject, bool) {
  1156  	return nil, false
  1157  }
  1158  
  1159  // AsBasicMediaObject is the BasicResponseBase implementation for CreativeWork.
  1160  func (cw CreativeWork) AsBasicMediaObject() (BasicMediaObject, bool) {
  1161  	return nil, false
  1162  }
  1163  
  1164  // AsArticle is the BasicResponseBase implementation for CreativeWork.
  1165  func (cw CreativeWork) AsArticle() (*Article, bool) {
  1166  	return nil, false
  1167  }
  1168  
  1169  // AsBasicArticle is the BasicResponseBase implementation for CreativeWork.
  1170  func (cw CreativeWork) AsBasicArticle() (BasicArticle, bool) {
  1171  	return nil, false
  1172  }
  1173  
  1174  // AsStructuredValue is the BasicResponseBase implementation for CreativeWork.
  1175  func (cw CreativeWork) AsStructuredValue() (*StructuredValue, bool) {
  1176  	return nil, false
  1177  }
  1178  
  1179  // AsResponseBase is the BasicResponseBase implementation for CreativeWork.
  1180  func (cw CreativeWork) AsResponseBase() (*ResponseBase, bool) {
  1181  	return nil, false
  1182  }
  1183  
  1184  // AsBasicResponseBase is the BasicResponseBase implementation for CreativeWork.
  1185  func (cw CreativeWork) AsBasicResponseBase() (BasicResponseBase, bool) {
  1186  	return &cw, true
  1187  }
  1188  
  1189  // UnmarshalJSON is the custom unmarshaler for CreativeWork struct.
  1190  func (cw *CreativeWork) UnmarshalJSON(body []byte) error {
  1191  	var m map[string]*json.RawMessage
  1192  	err := json.Unmarshal(body, &m)
  1193  	if err != nil {
  1194  		return err
  1195  	}
  1196  	for k, v := range m {
  1197  		switch k {
  1198  		case "thumbnailUrl":
  1199  			if v != nil {
  1200  				var thumbnailURL string
  1201  				err = json.Unmarshal(*v, &thumbnailURL)
  1202  				if err != nil {
  1203  					return err
  1204  				}
  1205  				cw.ThumbnailURL = &thumbnailURL
  1206  			}
  1207  		case "provider":
  1208  			if v != nil {
  1209  				provider, err := unmarshalBasicThingArray(*v)
  1210  				if err != nil {
  1211  					return err
  1212  				}
  1213  				cw.Provider = &provider
  1214  			}
  1215  		case "text":
  1216  			if v != nil {
  1217  				var textVar string
  1218  				err = json.Unmarshal(*v, &textVar)
  1219  				if err != nil {
  1220  					return err
  1221  				}
  1222  				cw.Text = &textVar
  1223  			}
  1224  		case "name":
  1225  			if v != nil {
  1226  				var name string
  1227  				err = json.Unmarshal(*v, &name)
  1228  				if err != nil {
  1229  					return err
  1230  				}
  1231  				cw.Name = &name
  1232  			}
  1233  		case "url":
  1234  			if v != nil {
  1235  				var URL string
  1236  				err = json.Unmarshal(*v, &URL)
  1237  				if err != nil {
  1238  					return err
  1239  				}
  1240  				cw.URL = &URL
  1241  			}
  1242  		case "image":
  1243  			if v != nil {
  1244  				var imageVar ImageObject
  1245  				err = json.Unmarshal(*v, &imageVar)
  1246  				if err != nil {
  1247  					return err
  1248  				}
  1249  				cw.Image = &imageVar
  1250  			}
  1251  		case "description":
  1252  			if v != nil {
  1253  				var description string
  1254  				err = json.Unmarshal(*v, &description)
  1255  				if err != nil {
  1256  					return err
  1257  				}
  1258  				cw.Description = &description
  1259  			}
  1260  		case "bingId":
  1261  			if v != nil {
  1262  				var bingID string
  1263  				err = json.Unmarshal(*v, &bingID)
  1264  				if err != nil {
  1265  					return err
  1266  				}
  1267  				cw.BingID = &bingID
  1268  			}
  1269  		case "webSearchUrl":
  1270  			if v != nil {
  1271  				var webSearchURL string
  1272  				err = json.Unmarshal(*v, &webSearchURL)
  1273  				if err != nil {
  1274  					return err
  1275  				}
  1276  				cw.WebSearchURL = &webSearchURL
  1277  			}
  1278  		case "id":
  1279  			if v != nil {
  1280  				var ID string
  1281  				err = json.Unmarshal(*v, &ID)
  1282  				if err != nil {
  1283  					return err
  1284  				}
  1285  				cw.ID = &ID
  1286  			}
  1287  		case "_type":
  1288  			if v != nil {
  1289  				var typeVar TypeBasicResponseBase
  1290  				err = json.Unmarshal(*v, &typeVar)
  1291  				if err != nil {
  1292  					return err
  1293  				}
  1294  				cw.Type = typeVar
  1295  			}
  1296  		}
  1297  	}
  1298  
  1299  	return nil
  1300  }
  1301  
  1302  // Error defines the error that occurred.
  1303  type Error struct {
  1304  	// Code - The error code that identifies the category of error. Possible values include: 'None', 'ServerError', 'InvalidRequest', 'RateLimitExceeded', 'InvalidAuthorization', 'InsufficientAuthorization'
  1305  	Code ErrorCode `json:"code,omitempty"`
  1306  	// SubCode - READ-ONLY; The error code that further helps to identify the error. Possible values include: 'UnexpectedError', 'ResourceError', 'NotImplemented', 'ParameterMissing', 'ParameterInvalidValue', 'HTTPNotAllowed', 'Blocked', 'AuthorizationMissing', 'AuthorizationRedundancy', 'AuthorizationDisabled', 'AuthorizationExpired'
  1307  	SubCode ErrorSubCode `json:"subCode,omitempty"`
  1308  	// Message - A description of the error.
  1309  	Message *string `json:"message,omitempty"`
  1310  	// MoreDetails - READ-ONLY; A description that provides additional information about the error.
  1311  	MoreDetails *string `json:"moreDetails,omitempty"`
  1312  	// Parameter - READ-ONLY; The parameter in the request that caused the error.
  1313  	Parameter *string `json:"parameter,omitempty"`
  1314  	// Value - READ-ONLY; The parameter's value in the request that was not valid.
  1315  	Value *string `json:"value,omitempty"`
  1316  }
  1317  
  1318  // MarshalJSON is the custom marshaler for Error.
  1319  func (e Error) MarshalJSON() ([]byte, error) {
  1320  	objectMap := make(map[string]interface{})
  1321  	if e.Code != "" {
  1322  		objectMap["code"] = e.Code
  1323  	}
  1324  	if e.Message != nil {
  1325  		objectMap["message"] = e.Message
  1326  	}
  1327  	return json.Marshal(objectMap)
  1328  }
  1329  
  1330  // ErrorResponse the top-level response that represents a failed request.
  1331  type ErrorResponse struct {
  1332  	// Errors - A list of errors that describe the reasons why the request failed.
  1333  	Errors *[]Error `json:"errors,omitempty"`
  1334  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  1335  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  1336  	// ID - READ-ONLY; A String identifier.
  1337  	ID *string `json:"id,omitempty"`
  1338  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  1339  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  1340  }
  1341  
  1342  // MarshalJSON is the custom marshaler for ErrorResponse.
  1343  func (er ErrorResponse) MarshalJSON() ([]byte, error) {
  1344  	er.Type = TypeErrorResponse
  1345  	objectMap := make(map[string]interface{})
  1346  	if er.Errors != nil {
  1347  		objectMap["errors"] = er.Errors
  1348  	}
  1349  	if er.Type != "" {
  1350  		objectMap["_type"] = er.Type
  1351  	}
  1352  	return json.Marshal(objectMap)
  1353  }
  1354  
  1355  // AsImageObject is the BasicResponseBase implementation for ErrorResponse.
  1356  func (er ErrorResponse) AsImageObject() (*ImageObject, bool) {
  1357  	return nil, false
  1358  }
  1359  
  1360  // AsWebPage is the BasicResponseBase implementation for ErrorResponse.
  1361  func (er ErrorResponse) AsWebPage() (*WebPage, bool) {
  1362  	return nil, false
  1363  }
  1364  
  1365  // AsWebWebAnswer is the BasicResponseBase implementation for ErrorResponse.
  1366  func (er ErrorResponse) AsWebWebAnswer() (*WebWebAnswer, bool) {
  1367  	return nil, false
  1368  }
  1369  
  1370  // AsImages is the BasicResponseBase implementation for ErrorResponse.
  1371  func (er ErrorResponse) AsImages() (*Images, bool) {
  1372  	return nil, false
  1373  }
  1374  
  1375  // AsNewsArticle is the BasicResponseBase implementation for ErrorResponse.
  1376  func (er ErrorResponse) AsNewsArticle() (*NewsArticle, bool) {
  1377  	return nil, false
  1378  }
  1379  
  1380  // AsNews is the BasicResponseBase implementation for ErrorResponse.
  1381  func (er ErrorResponse) AsNews() (*News, bool) {
  1382  	return nil, false
  1383  }
  1384  
  1385  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for ErrorResponse.
  1386  func (er ErrorResponse) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  1387  	return nil, false
  1388  }
  1389  
  1390  // AsSpellSuggestions is the BasicResponseBase implementation for ErrorResponse.
  1391  func (er ErrorResponse) AsSpellSuggestions() (*SpellSuggestions, bool) {
  1392  	return nil, false
  1393  }
  1394  
  1395  // AsTimeZone is the BasicResponseBase implementation for ErrorResponse.
  1396  func (er ErrorResponse) AsTimeZone() (*TimeZone, bool) {
  1397  	return nil, false
  1398  }
  1399  
  1400  // AsVideoObject is the BasicResponseBase implementation for ErrorResponse.
  1401  func (er ErrorResponse) AsVideoObject() (*VideoObject, bool) {
  1402  	return nil, false
  1403  }
  1404  
  1405  // AsVideos is the BasicResponseBase implementation for ErrorResponse.
  1406  func (er ErrorResponse) AsVideos() (*Videos, bool) {
  1407  	return nil, false
  1408  }
  1409  
  1410  // AsComputation is the BasicResponseBase implementation for ErrorResponse.
  1411  func (er ErrorResponse) AsComputation() (*Computation, bool) {
  1412  	return nil, false
  1413  }
  1414  
  1415  // AsIdentifiable is the BasicResponseBase implementation for ErrorResponse.
  1416  func (er ErrorResponse) AsIdentifiable() (*Identifiable, bool) {
  1417  	return nil, false
  1418  }
  1419  
  1420  // AsBasicIdentifiable is the BasicResponseBase implementation for ErrorResponse.
  1421  func (er ErrorResponse) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  1422  	return &er, true
  1423  }
  1424  
  1425  // AsSearchResponse is the BasicResponseBase implementation for ErrorResponse.
  1426  func (er ErrorResponse) AsSearchResponse() (*SearchResponse, bool) {
  1427  	return nil, false
  1428  }
  1429  
  1430  // AsResponse is the BasicResponseBase implementation for ErrorResponse.
  1431  func (er ErrorResponse) AsResponse() (*Response, bool) {
  1432  	return nil, false
  1433  }
  1434  
  1435  // AsBasicResponse is the BasicResponseBase implementation for ErrorResponse.
  1436  func (er ErrorResponse) AsBasicResponse() (BasicResponse, bool) {
  1437  	return &er, true
  1438  }
  1439  
  1440  // AsThing is the BasicResponseBase implementation for ErrorResponse.
  1441  func (er ErrorResponse) AsThing() (*Thing, bool) {
  1442  	return nil, false
  1443  }
  1444  
  1445  // AsBasicThing is the BasicResponseBase implementation for ErrorResponse.
  1446  func (er ErrorResponse) AsBasicThing() (BasicThing, bool) {
  1447  	return nil, false
  1448  }
  1449  
  1450  // AsPlaces is the BasicResponseBase implementation for ErrorResponse.
  1451  func (er ErrorResponse) AsPlaces() (*Places, bool) {
  1452  	return nil, false
  1453  }
  1454  
  1455  // AsSearchResultsAnswer is the BasicResponseBase implementation for ErrorResponse.
  1456  func (er ErrorResponse) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  1457  	return nil, false
  1458  }
  1459  
  1460  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for ErrorResponse.
  1461  func (er ErrorResponse) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  1462  	return nil, false
  1463  }
  1464  
  1465  // AsAnswer is the BasicResponseBase implementation for ErrorResponse.
  1466  func (er ErrorResponse) AsAnswer() (*Answer, bool) {
  1467  	return nil, false
  1468  }
  1469  
  1470  // AsBasicAnswer is the BasicResponseBase implementation for ErrorResponse.
  1471  func (er ErrorResponse) AsBasicAnswer() (BasicAnswer, bool) {
  1472  	return nil, false
  1473  }
  1474  
  1475  // AsErrorResponse is the BasicResponseBase implementation for ErrorResponse.
  1476  func (er ErrorResponse) AsErrorResponse() (*ErrorResponse, bool) {
  1477  	return &er, true
  1478  }
  1479  
  1480  // AsCreativeWork is the BasicResponseBase implementation for ErrorResponse.
  1481  func (er ErrorResponse) AsCreativeWork() (*CreativeWork, bool) {
  1482  	return nil, false
  1483  }
  1484  
  1485  // AsBasicCreativeWork is the BasicResponseBase implementation for ErrorResponse.
  1486  func (er ErrorResponse) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  1487  	return nil, false
  1488  }
  1489  
  1490  // AsIntangible is the BasicResponseBase implementation for ErrorResponse.
  1491  func (er ErrorResponse) AsIntangible() (*Intangible, bool) {
  1492  	return nil, false
  1493  }
  1494  
  1495  // AsBasicIntangible is the BasicResponseBase implementation for ErrorResponse.
  1496  func (er ErrorResponse) AsBasicIntangible() (BasicIntangible, bool) {
  1497  	return nil, false
  1498  }
  1499  
  1500  // AsMediaObject is the BasicResponseBase implementation for ErrorResponse.
  1501  func (er ErrorResponse) AsMediaObject() (*MediaObject, bool) {
  1502  	return nil, false
  1503  }
  1504  
  1505  // AsBasicMediaObject is the BasicResponseBase implementation for ErrorResponse.
  1506  func (er ErrorResponse) AsBasicMediaObject() (BasicMediaObject, bool) {
  1507  	return nil, false
  1508  }
  1509  
  1510  // AsArticle is the BasicResponseBase implementation for ErrorResponse.
  1511  func (er ErrorResponse) AsArticle() (*Article, bool) {
  1512  	return nil, false
  1513  }
  1514  
  1515  // AsBasicArticle is the BasicResponseBase implementation for ErrorResponse.
  1516  func (er ErrorResponse) AsBasicArticle() (BasicArticle, bool) {
  1517  	return nil, false
  1518  }
  1519  
  1520  // AsStructuredValue is the BasicResponseBase implementation for ErrorResponse.
  1521  func (er ErrorResponse) AsStructuredValue() (*StructuredValue, bool) {
  1522  	return nil, false
  1523  }
  1524  
  1525  // AsResponseBase is the BasicResponseBase implementation for ErrorResponse.
  1526  func (er ErrorResponse) AsResponseBase() (*ResponseBase, bool) {
  1527  	return nil, false
  1528  }
  1529  
  1530  // AsBasicResponseBase is the BasicResponseBase implementation for ErrorResponse.
  1531  func (er ErrorResponse) AsBasicResponseBase() (BasicResponseBase, bool) {
  1532  	return &er, true
  1533  }
  1534  
  1535  // BasicIdentifiable defines the identity of a resource.
  1536  type BasicIdentifiable interface {
  1537  	AsImageObject() (*ImageObject, bool)
  1538  	AsWebPage() (*WebPage, bool)
  1539  	AsWebWebAnswer() (*WebWebAnswer, bool)
  1540  	AsImages() (*Images, bool)
  1541  	AsNewsArticle() (*NewsArticle, bool)
  1542  	AsNews() (*News, bool)
  1543  	AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool)
  1544  	AsSpellSuggestions() (*SpellSuggestions, bool)
  1545  	AsTimeZone() (*TimeZone, bool)
  1546  	AsVideoObject() (*VideoObject, bool)
  1547  	AsVideos() (*Videos, bool)
  1548  	AsComputation() (*Computation, bool)
  1549  	AsSearchResponse() (*SearchResponse, bool)
  1550  	AsResponse() (*Response, bool)
  1551  	AsBasicResponse() (BasicResponse, bool)
  1552  	AsThing() (*Thing, bool)
  1553  	AsBasicThing() (BasicThing, bool)
  1554  	AsPlaces() (*Places, bool)
  1555  	AsSearchResultsAnswer() (*SearchResultsAnswer, bool)
  1556  	AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool)
  1557  	AsAnswer() (*Answer, bool)
  1558  	AsBasicAnswer() (BasicAnswer, bool)
  1559  	AsErrorResponse() (*ErrorResponse, bool)
  1560  	AsCreativeWork() (*CreativeWork, bool)
  1561  	AsBasicCreativeWork() (BasicCreativeWork, bool)
  1562  	AsIntangible() (*Intangible, bool)
  1563  	AsBasicIntangible() (BasicIntangible, bool)
  1564  	AsMediaObject() (*MediaObject, bool)
  1565  	AsBasicMediaObject() (BasicMediaObject, bool)
  1566  	AsArticle() (*Article, bool)
  1567  	AsBasicArticle() (BasicArticle, bool)
  1568  	AsStructuredValue() (*StructuredValue, bool)
  1569  	AsIdentifiable() (*Identifiable, bool)
  1570  }
  1571  
  1572  // Identifiable defines the identity of a resource.
  1573  type Identifiable struct {
  1574  	// ID - READ-ONLY; A String identifier.
  1575  	ID *string `json:"id,omitempty"`
  1576  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  1577  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  1578  }
  1579  
  1580  func unmarshalBasicIdentifiable(body []byte) (BasicIdentifiable, error) {
  1581  	var m map[string]interface{}
  1582  	err := json.Unmarshal(body, &m)
  1583  	if err != nil {
  1584  		return nil, err
  1585  	}
  1586  
  1587  	switch m["_type"] {
  1588  	case string(TypeImageObject):
  1589  		var ioVar ImageObject
  1590  		err := json.Unmarshal(body, &ioVar)
  1591  		return ioVar, err
  1592  	case string(TypeWebPage):
  1593  		var wp WebPage
  1594  		err := json.Unmarshal(body, &wp)
  1595  		return wp, err
  1596  	case string(TypeWebWebAnswer):
  1597  		var wwa WebWebAnswer
  1598  		err := json.Unmarshal(body, &wwa)
  1599  		return wwa, err
  1600  	case string(TypeImages):
  1601  		var i Images
  1602  		err := json.Unmarshal(body, &i)
  1603  		return i, err
  1604  	case string(TypeNewsArticle):
  1605  		var na NewsArticle
  1606  		err := json.Unmarshal(body, &na)
  1607  		return na, err
  1608  	case string(TypeNews):
  1609  		var n News
  1610  		err := json.Unmarshal(body, &n)
  1611  		return n, err
  1612  	case string(TypeRelatedSearchesRelatedSearchAnswer):
  1613  		var rsrsa RelatedSearchesRelatedSearchAnswer
  1614  		err := json.Unmarshal(body, &rsrsa)
  1615  		return rsrsa, err
  1616  	case string(TypeSpellSuggestions):
  1617  		var ss SpellSuggestions
  1618  		err := json.Unmarshal(body, &ss)
  1619  		return ss, err
  1620  	case string(TypeTimeZone):
  1621  		var tz TimeZone
  1622  		err := json.Unmarshal(body, &tz)
  1623  		return tz, err
  1624  	case string(TypeVideoObject):
  1625  		var vo VideoObject
  1626  		err := json.Unmarshal(body, &vo)
  1627  		return vo, err
  1628  	case string(TypeVideos):
  1629  		var vVar Videos
  1630  		err := json.Unmarshal(body, &vVar)
  1631  		return vVar, err
  1632  	case string(TypeComputation):
  1633  		var c Computation
  1634  		err := json.Unmarshal(body, &c)
  1635  		return c, err
  1636  	case string(TypeSearchResponse):
  1637  		var sr SearchResponse
  1638  		err := json.Unmarshal(body, &sr)
  1639  		return sr, err
  1640  	case string(TypeResponse):
  1641  		var r Response
  1642  		err := json.Unmarshal(body, &r)
  1643  		return r, err
  1644  	case string(TypeThing):
  1645  		var t Thing
  1646  		err := json.Unmarshal(body, &t)
  1647  		return t, err
  1648  	case string(TypePlaces):
  1649  		var p Places
  1650  		err := json.Unmarshal(body, &p)
  1651  		return p, err
  1652  	case string(TypeSearchResultsAnswer):
  1653  		var sra SearchResultsAnswer
  1654  		err := json.Unmarshal(body, &sra)
  1655  		return sra, err
  1656  	case string(TypeAnswer):
  1657  		var a Answer
  1658  		err := json.Unmarshal(body, &a)
  1659  		return a, err
  1660  	case string(TypeErrorResponse):
  1661  		var er ErrorResponse
  1662  		err := json.Unmarshal(body, &er)
  1663  		return er, err
  1664  	case string(TypeCreativeWork):
  1665  		var cw CreativeWork
  1666  		err := json.Unmarshal(body, &cw)
  1667  		return cw, err
  1668  	case string(TypeIntangible):
  1669  		var i Intangible
  1670  		err := json.Unmarshal(body, &i)
  1671  		return i, err
  1672  	case string(TypeMediaObject):
  1673  		var mo MediaObject
  1674  		err := json.Unmarshal(body, &mo)
  1675  		return mo, err
  1676  	case string(TypeArticle):
  1677  		var a Article
  1678  		err := json.Unmarshal(body, &a)
  1679  		return a, err
  1680  	case string(TypeStructuredValue):
  1681  		var sv StructuredValue
  1682  		err := json.Unmarshal(body, &sv)
  1683  		return sv, err
  1684  	default:
  1685  		var i Identifiable
  1686  		err := json.Unmarshal(body, &i)
  1687  		return i, err
  1688  	}
  1689  }
  1690  func unmarshalBasicIdentifiableArray(body []byte) ([]BasicIdentifiable, error) {
  1691  	var rawMessages []*json.RawMessage
  1692  	err := json.Unmarshal(body, &rawMessages)
  1693  	if err != nil {
  1694  		return nil, err
  1695  	}
  1696  
  1697  	iArray := make([]BasicIdentifiable, len(rawMessages))
  1698  
  1699  	for index, rawMessage := range rawMessages {
  1700  		i, err := unmarshalBasicIdentifiable(*rawMessage)
  1701  		if err != nil {
  1702  			return nil, err
  1703  		}
  1704  		iArray[index] = i
  1705  	}
  1706  	return iArray, nil
  1707  }
  1708  
  1709  // MarshalJSON is the custom marshaler for Identifiable.
  1710  func (i Identifiable) MarshalJSON() ([]byte, error) {
  1711  	i.Type = TypeIdentifiable
  1712  	objectMap := make(map[string]interface{})
  1713  	if i.Type != "" {
  1714  		objectMap["_type"] = i.Type
  1715  	}
  1716  	return json.Marshal(objectMap)
  1717  }
  1718  
  1719  // AsImageObject is the BasicResponseBase implementation for Identifiable.
  1720  func (i Identifiable) AsImageObject() (*ImageObject, bool) {
  1721  	return nil, false
  1722  }
  1723  
  1724  // AsWebPage is the BasicResponseBase implementation for Identifiable.
  1725  func (i Identifiable) AsWebPage() (*WebPage, bool) {
  1726  	return nil, false
  1727  }
  1728  
  1729  // AsWebWebAnswer is the BasicResponseBase implementation for Identifiable.
  1730  func (i Identifiable) AsWebWebAnswer() (*WebWebAnswer, bool) {
  1731  	return nil, false
  1732  }
  1733  
  1734  // AsImages is the BasicResponseBase implementation for Identifiable.
  1735  func (i Identifiable) AsImages() (*Images, bool) {
  1736  	return nil, false
  1737  }
  1738  
  1739  // AsNewsArticle is the BasicResponseBase implementation for Identifiable.
  1740  func (i Identifiable) AsNewsArticle() (*NewsArticle, bool) {
  1741  	return nil, false
  1742  }
  1743  
  1744  // AsNews is the BasicResponseBase implementation for Identifiable.
  1745  func (i Identifiable) AsNews() (*News, bool) {
  1746  	return nil, false
  1747  }
  1748  
  1749  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for Identifiable.
  1750  func (i Identifiable) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  1751  	return nil, false
  1752  }
  1753  
  1754  // AsSpellSuggestions is the BasicResponseBase implementation for Identifiable.
  1755  func (i Identifiable) AsSpellSuggestions() (*SpellSuggestions, bool) {
  1756  	return nil, false
  1757  }
  1758  
  1759  // AsTimeZone is the BasicResponseBase implementation for Identifiable.
  1760  func (i Identifiable) AsTimeZone() (*TimeZone, bool) {
  1761  	return nil, false
  1762  }
  1763  
  1764  // AsVideoObject is the BasicResponseBase implementation for Identifiable.
  1765  func (i Identifiable) AsVideoObject() (*VideoObject, bool) {
  1766  	return nil, false
  1767  }
  1768  
  1769  // AsVideos is the BasicResponseBase implementation for Identifiable.
  1770  func (i Identifiable) AsVideos() (*Videos, bool) {
  1771  	return nil, false
  1772  }
  1773  
  1774  // AsComputation is the BasicResponseBase implementation for Identifiable.
  1775  func (i Identifiable) AsComputation() (*Computation, bool) {
  1776  	return nil, false
  1777  }
  1778  
  1779  // AsIdentifiable is the BasicResponseBase implementation for Identifiable.
  1780  func (i Identifiable) AsIdentifiable() (*Identifiable, bool) {
  1781  	return &i, true
  1782  }
  1783  
  1784  // AsBasicIdentifiable is the BasicResponseBase implementation for Identifiable.
  1785  func (i Identifiable) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  1786  	return &i, true
  1787  }
  1788  
  1789  // AsSearchResponse is the BasicResponseBase implementation for Identifiable.
  1790  func (i Identifiable) AsSearchResponse() (*SearchResponse, bool) {
  1791  	return nil, false
  1792  }
  1793  
  1794  // AsResponse is the BasicResponseBase implementation for Identifiable.
  1795  func (i Identifiable) AsResponse() (*Response, bool) {
  1796  	return nil, false
  1797  }
  1798  
  1799  // AsBasicResponse is the BasicResponseBase implementation for Identifiable.
  1800  func (i Identifiable) AsBasicResponse() (BasicResponse, bool) {
  1801  	return nil, false
  1802  }
  1803  
  1804  // AsThing is the BasicResponseBase implementation for Identifiable.
  1805  func (i Identifiable) AsThing() (*Thing, bool) {
  1806  	return nil, false
  1807  }
  1808  
  1809  // AsBasicThing is the BasicResponseBase implementation for Identifiable.
  1810  func (i Identifiable) AsBasicThing() (BasicThing, bool) {
  1811  	return nil, false
  1812  }
  1813  
  1814  // AsPlaces is the BasicResponseBase implementation for Identifiable.
  1815  func (i Identifiable) AsPlaces() (*Places, bool) {
  1816  	return nil, false
  1817  }
  1818  
  1819  // AsSearchResultsAnswer is the BasicResponseBase implementation for Identifiable.
  1820  func (i Identifiable) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  1821  	return nil, false
  1822  }
  1823  
  1824  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Identifiable.
  1825  func (i Identifiable) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  1826  	return nil, false
  1827  }
  1828  
  1829  // AsAnswer is the BasicResponseBase implementation for Identifiable.
  1830  func (i Identifiable) AsAnswer() (*Answer, bool) {
  1831  	return nil, false
  1832  }
  1833  
  1834  // AsBasicAnswer is the BasicResponseBase implementation for Identifiable.
  1835  func (i Identifiable) AsBasicAnswer() (BasicAnswer, bool) {
  1836  	return nil, false
  1837  }
  1838  
  1839  // AsErrorResponse is the BasicResponseBase implementation for Identifiable.
  1840  func (i Identifiable) AsErrorResponse() (*ErrorResponse, bool) {
  1841  	return nil, false
  1842  }
  1843  
  1844  // AsCreativeWork is the BasicResponseBase implementation for Identifiable.
  1845  func (i Identifiable) AsCreativeWork() (*CreativeWork, bool) {
  1846  	return nil, false
  1847  }
  1848  
  1849  // AsBasicCreativeWork is the BasicResponseBase implementation for Identifiable.
  1850  func (i Identifiable) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  1851  	return nil, false
  1852  }
  1853  
  1854  // AsIntangible is the BasicResponseBase implementation for Identifiable.
  1855  func (i Identifiable) AsIntangible() (*Intangible, bool) {
  1856  	return nil, false
  1857  }
  1858  
  1859  // AsBasicIntangible is the BasicResponseBase implementation for Identifiable.
  1860  func (i Identifiable) AsBasicIntangible() (BasicIntangible, bool) {
  1861  	return nil, false
  1862  }
  1863  
  1864  // AsMediaObject is the BasicResponseBase implementation for Identifiable.
  1865  func (i Identifiable) AsMediaObject() (*MediaObject, bool) {
  1866  	return nil, false
  1867  }
  1868  
  1869  // AsBasicMediaObject is the BasicResponseBase implementation for Identifiable.
  1870  func (i Identifiable) AsBasicMediaObject() (BasicMediaObject, bool) {
  1871  	return nil, false
  1872  }
  1873  
  1874  // AsArticle is the BasicResponseBase implementation for Identifiable.
  1875  func (i Identifiable) AsArticle() (*Article, bool) {
  1876  	return nil, false
  1877  }
  1878  
  1879  // AsBasicArticle is the BasicResponseBase implementation for Identifiable.
  1880  func (i Identifiable) AsBasicArticle() (BasicArticle, bool) {
  1881  	return nil, false
  1882  }
  1883  
  1884  // AsStructuredValue is the BasicResponseBase implementation for Identifiable.
  1885  func (i Identifiable) AsStructuredValue() (*StructuredValue, bool) {
  1886  	return nil, false
  1887  }
  1888  
  1889  // AsResponseBase is the BasicResponseBase implementation for Identifiable.
  1890  func (i Identifiable) AsResponseBase() (*ResponseBase, bool) {
  1891  	return nil, false
  1892  }
  1893  
  1894  // AsBasicResponseBase is the BasicResponseBase implementation for Identifiable.
  1895  func (i Identifiable) AsBasicResponseBase() (BasicResponseBase, bool) {
  1896  	return &i, true
  1897  }
  1898  
  1899  // ImageObject defines an image
  1900  type ImageObject struct {
  1901  	// Thumbnail - READ-ONLY; The URL to a thumbnail of the image
  1902  	Thumbnail *ImageObject `json:"thumbnail,omitempty"`
  1903  	// ContentURL - READ-ONLY; Original URL to retrieve the source (file) for the media object (e.g the source URL for the image).
  1904  	ContentURL *string `json:"contentUrl,omitempty"`
  1905  	// HostPageURL - READ-ONLY; URL of the page that hosts the media object.
  1906  	HostPageURL *string `json:"hostPageUrl,omitempty"`
  1907  	// Width - READ-ONLY; The width of the source media object, in pixels.
  1908  	Width *int32 `json:"width,omitempty"`
  1909  	// Height - READ-ONLY; The height of the source media object, in pixels.
  1910  	Height *int32 `json:"height,omitempty"`
  1911  	// ThumbnailURL - READ-ONLY; The URL to a thumbnail of the item.
  1912  	ThumbnailURL *string `json:"thumbnailUrl,omitempty"`
  1913  	// Provider - READ-ONLY; The source of the creative work.
  1914  	Provider *[]BasicThing `json:"provider,omitempty"`
  1915  	// Text - READ-ONLY
  1916  	Text *string `json:"text,omitempty"`
  1917  	// Name - READ-ONLY; The name of the thing represented by this object.
  1918  	Name *string `json:"name,omitempty"`
  1919  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
  1920  	URL *string `json:"url,omitempty"`
  1921  	// Image - READ-ONLY
  1922  	Image *ImageObject `json:"image,omitempty"`
  1923  	// Description - READ-ONLY; A short description of the item.
  1924  	Description *string `json:"description,omitempty"`
  1925  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
  1926  	BingID *string `json:"bingId,omitempty"`
  1927  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  1928  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  1929  	// ID - READ-ONLY; A String identifier.
  1930  	ID *string `json:"id,omitempty"`
  1931  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  1932  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  1933  }
  1934  
  1935  // MarshalJSON is the custom marshaler for ImageObject.
  1936  func (ioVar ImageObject) MarshalJSON() ([]byte, error) {
  1937  	ioVar.Type = TypeImageObject
  1938  	objectMap := make(map[string]interface{})
  1939  	if ioVar.Type != "" {
  1940  		objectMap["_type"] = ioVar.Type
  1941  	}
  1942  	return json.Marshal(objectMap)
  1943  }
  1944  
  1945  // AsImageObject is the BasicResponseBase implementation for ImageObject.
  1946  func (ioVar ImageObject) AsImageObject() (*ImageObject, bool) {
  1947  	return &ioVar, true
  1948  }
  1949  
  1950  // AsWebPage is the BasicResponseBase implementation for ImageObject.
  1951  func (ioVar ImageObject) AsWebPage() (*WebPage, bool) {
  1952  	return nil, false
  1953  }
  1954  
  1955  // AsWebWebAnswer is the BasicResponseBase implementation for ImageObject.
  1956  func (ioVar ImageObject) AsWebWebAnswer() (*WebWebAnswer, bool) {
  1957  	return nil, false
  1958  }
  1959  
  1960  // AsImages is the BasicResponseBase implementation for ImageObject.
  1961  func (ioVar ImageObject) AsImages() (*Images, bool) {
  1962  	return nil, false
  1963  }
  1964  
  1965  // AsNewsArticle is the BasicResponseBase implementation for ImageObject.
  1966  func (ioVar ImageObject) AsNewsArticle() (*NewsArticle, bool) {
  1967  	return nil, false
  1968  }
  1969  
  1970  // AsNews is the BasicResponseBase implementation for ImageObject.
  1971  func (ioVar ImageObject) AsNews() (*News, bool) {
  1972  	return nil, false
  1973  }
  1974  
  1975  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for ImageObject.
  1976  func (ioVar ImageObject) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  1977  	return nil, false
  1978  }
  1979  
  1980  // AsSpellSuggestions is the BasicResponseBase implementation for ImageObject.
  1981  func (ioVar ImageObject) AsSpellSuggestions() (*SpellSuggestions, bool) {
  1982  	return nil, false
  1983  }
  1984  
  1985  // AsTimeZone is the BasicResponseBase implementation for ImageObject.
  1986  func (ioVar ImageObject) AsTimeZone() (*TimeZone, bool) {
  1987  	return nil, false
  1988  }
  1989  
  1990  // AsVideoObject is the BasicResponseBase implementation for ImageObject.
  1991  func (ioVar ImageObject) AsVideoObject() (*VideoObject, bool) {
  1992  	return nil, false
  1993  }
  1994  
  1995  // AsVideos is the BasicResponseBase implementation for ImageObject.
  1996  func (ioVar ImageObject) AsVideos() (*Videos, bool) {
  1997  	return nil, false
  1998  }
  1999  
  2000  // AsComputation is the BasicResponseBase implementation for ImageObject.
  2001  func (ioVar ImageObject) AsComputation() (*Computation, bool) {
  2002  	return nil, false
  2003  }
  2004  
  2005  // AsIdentifiable is the BasicResponseBase implementation for ImageObject.
  2006  func (ioVar ImageObject) AsIdentifiable() (*Identifiable, bool) {
  2007  	return nil, false
  2008  }
  2009  
  2010  // AsBasicIdentifiable is the BasicResponseBase implementation for ImageObject.
  2011  func (ioVar ImageObject) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  2012  	return &ioVar, true
  2013  }
  2014  
  2015  // AsSearchResponse is the BasicResponseBase implementation for ImageObject.
  2016  func (ioVar ImageObject) AsSearchResponse() (*SearchResponse, bool) {
  2017  	return nil, false
  2018  }
  2019  
  2020  // AsResponse is the BasicResponseBase implementation for ImageObject.
  2021  func (ioVar ImageObject) AsResponse() (*Response, bool) {
  2022  	return nil, false
  2023  }
  2024  
  2025  // AsBasicResponse is the BasicResponseBase implementation for ImageObject.
  2026  func (ioVar ImageObject) AsBasicResponse() (BasicResponse, bool) {
  2027  	return &ioVar, true
  2028  }
  2029  
  2030  // AsThing is the BasicResponseBase implementation for ImageObject.
  2031  func (ioVar ImageObject) AsThing() (*Thing, bool) {
  2032  	return nil, false
  2033  }
  2034  
  2035  // AsBasicThing is the BasicResponseBase implementation for ImageObject.
  2036  func (ioVar ImageObject) AsBasicThing() (BasicThing, bool) {
  2037  	return &ioVar, true
  2038  }
  2039  
  2040  // AsPlaces is the BasicResponseBase implementation for ImageObject.
  2041  func (ioVar ImageObject) AsPlaces() (*Places, bool) {
  2042  	return nil, false
  2043  }
  2044  
  2045  // AsSearchResultsAnswer is the BasicResponseBase implementation for ImageObject.
  2046  func (ioVar ImageObject) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  2047  	return nil, false
  2048  }
  2049  
  2050  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for ImageObject.
  2051  func (ioVar ImageObject) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  2052  	return nil, false
  2053  }
  2054  
  2055  // AsAnswer is the BasicResponseBase implementation for ImageObject.
  2056  func (ioVar ImageObject) AsAnswer() (*Answer, bool) {
  2057  	return nil, false
  2058  }
  2059  
  2060  // AsBasicAnswer is the BasicResponseBase implementation for ImageObject.
  2061  func (ioVar ImageObject) AsBasicAnswer() (BasicAnswer, bool) {
  2062  	return nil, false
  2063  }
  2064  
  2065  // AsErrorResponse is the BasicResponseBase implementation for ImageObject.
  2066  func (ioVar ImageObject) AsErrorResponse() (*ErrorResponse, bool) {
  2067  	return nil, false
  2068  }
  2069  
  2070  // AsCreativeWork is the BasicResponseBase implementation for ImageObject.
  2071  func (ioVar ImageObject) AsCreativeWork() (*CreativeWork, bool) {
  2072  	return nil, false
  2073  }
  2074  
  2075  // AsBasicCreativeWork is the BasicResponseBase implementation for ImageObject.
  2076  func (ioVar ImageObject) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  2077  	return &ioVar, true
  2078  }
  2079  
  2080  // AsIntangible is the BasicResponseBase implementation for ImageObject.
  2081  func (ioVar ImageObject) AsIntangible() (*Intangible, bool) {
  2082  	return nil, false
  2083  }
  2084  
  2085  // AsBasicIntangible is the BasicResponseBase implementation for ImageObject.
  2086  func (ioVar ImageObject) AsBasicIntangible() (BasicIntangible, bool) {
  2087  	return nil, false
  2088  }
  2089  
  2090  // AsMediaObject is the BasicResponseBase implementation for ImageObject.
  2091  func (ioVar ImageObject) AsMediaObject() (*MediaObject, bool) {
  2092  	return nil, false
  2093  }
  2094  
  2095  // AsBasicMediaObject is the BasicResponseBase implementation for ImageObject.
  2096  func (ioVar ImageObject) AsBasicMediaObject() (BasicMediaObject, bool) {
  2097  	return &ioVar, true
  2098  }
  2099  
  2100  // AsArticle is the BasicResponseBase implementation for ImageObject.
  2101  func (ioVar ImageObject) AsArticle() (*Article, bool) {
  2102  	return nil, false
  2103  }
  2104  
  2105  // AsBasicArticle is the BasicResponseBase implementation for ImageObject.
  2106  func (ioVar ImageObject) AsBasicArticle() (BasicArticle, bool) {
  2107  	return nil, false
  2108  }
  2109  
  2110  // AsStructuredValue is the BasicResponseBase implementation for ImageObject.
  2111  func (ioVar ImageObject) AsStructuredValue() (*StructuredValue, bool) {
  2112  	return nil, false
  2113  }
  2114  
  2115  // AsResponseBase is the BasicResponseBase implementation for ImageObject.
  2116  func (ioVar ImageObject) AsResponseBase() (*ResponseBase, bool) {
  2117  	return nil, false
  2118  }
  2119  
  2120  // AsBasicResponseBase is the BasicResponseBase implementation for ImageObject.
  2121  func (ioVar ImageObject) AsBasicResponseBase() (BasicResponseBase, bool) {
  2122  	return &ioVar, true
  2123  }
  2124  
  2125  // UnmarshalJSON is the custom unmarshaler for ImageObject struct.
  2126  func (ioVar *ImageObject) UnmarshalJSON(body []byte) error {
  2127  	var m map[string]*json.RawMessage
  2128  	err := json.Unmarshal(body, &m)
  2129  	if err != nil {
  2130  		return err
  2131  	}
  2132  	for k, v := range m {
  2133  		switch k {
  2134  		case "thumbnail":
  2135  			if v != nil {
  2136  				var thumbnail ImageObject
  2137  				err = json.Unmarshal(*v, &thumbnail)
  2138  				if err != nil {
  2139  					return err
  2140  				}
  2141  				ioVar.Thumbnail = &thumbnail
  2142  			}
  2143  		case "contentUrl":
  2144  			if v != nil {
  2145  				var contentURL string
  2146  				err = json.Unmarshal(*v, &contentURL)
  2147  				if err != nil {
  2148  					return err
  2149  				}
  2150  				ioVar.ContentURL = &contentURL
  2151  			}
  2152  		case "hostPageUrl":
  2153  			if v != nil {
  2154  				var hostPageURL string
  2155  				err = json.Unmarshal(*v, &hostPageURL)
  2156  				if err != nil {
  2157  					return err
  2158  				}
  2159  				ioVar.HostPageURL = &hostPageURL
  2160  			}
  2161  		case "width":
  2162  			if v != nil {
  2163  				var width int32
  2164  				err = json.Unmarshal(*v, &width)
  2165  				if err != nil {
  2166  					return err
  2167  				}
  2168  				ioVar.Width = &width
  2169  			}
  2170  		case "height":
  2171  			if v != nil {
  2172  				var height int32
  2173  				err = json.Unmarshal(*v, &height)
  2174  				if err != nil {
  2175  					return err
  2176  				}
  2177  				ioVar.Height = &height
  2178  			}
  2179  		case "thumbnailUrl":
  2180  			if v != nil {
  2181  				var thumbnailURL string
  2182  				err = json.Unmarshal(*v, &thumbnailURL)
  2183  				if err != nil {
  2184  					return err
  2185  				}
  2186  				ioVar.ThumbnailURL = &thumbnailURL
  2187  			}
  2188  		case "provider":
  2189  			if v != nil {
  2190  				provider, err := unmarshalBasicThingArray(*v)
  2191  				if err != nil {
  2192  					return err
  2193  				}
  2194  				ioVar.Provider = &provider
  2195  			}
  2196  		case "text":
  2197  			if v != nil {
  2198  				var textVar string
  2199  				err = json.Unmarshal(*v, &textVar)
  2200  				if err != nil {
  2201  					return err
  2202  				}
  2203  				ioVar.Text = &textVar
  2204  			}
  2205  		case "name":
  2206  			if v != nil {
  2207  				var name string
  2208  				err = json.Unmarshal(*v, &name)
  2209  				if err != nil {
  2210  					return err
  2211  				}
  2212  				ioVar.Name = &name
  2213  			}
  2214  		case "url":
  2215  			if v != nil {
  2216  				var URL string
  2217  				err = json.Unmarshal(*v, &URL)
  2218  				if err != nil {
  2219  					return err
  2220  				}
  2221  				ioVar.URL = &URL
  2222  			}
  2223  		case "image":
  2224  			if v != nil {
  2225  				var imageVar ImageObject
  2226  				err = json.Unmarshal(*v, &imageVar)
  2227  				if err != nil {
  2228  					return err
  2229  				}
  2230  				ioVar.Image = &imageVar
  2231  			}
  2232  		case "description":
  2233  			if v != nil {
  2234  				var description string
  2235  				err = json.Unmarshal(*v, &description)
  2236  				if err != nil {
  2237  					return err
  2238  				}
  2239  				ioVar.Description = &description
  2240  			}
  2241  		case "bingId":
  2242  			if v != nil {
  2243  				var bingID string
  2244  				err = json.Unmarshal(*v, &bingID)
  2245  				if err != nil {
  2246  					return err
  2247  				}
  2248  				ioVar.BingID = &bingID
  2249  			}
  2250  		case "webSearchUrl":
  2251  			if v != nil {
  2252  				var webSearchURL string
  2253  				err = json.Unmarshal(*v, &webSearchURL)
  2254  				if err != nil {
  2255  					return err
  2256  				}
  2257  				ioVar.WebSearchURL = &webSearchURL
  2258  			}
  2259  		case "id":
  2260  			if v != nil {
  2261  				var ID string
  2262  				err = json.Unmarshal(*v, &ID)
  2263  				if err != nil {
  2264  					return err
  2265  				}
  2266  				ioVar.ID = &ID
  2267  			}
  2268  		case "_type":
  2269  			if v != nil {
  2270  				var typeVar TypeBasicResponseBase
  2271  				err = json.Unmarshal(*v, &typeVar)
  2272  				if err != nil {
  2273  					return err
  2274  				}
  2275  				ioVar.Type = typeVar
  2276  			}
  2277  		}
  2278  	}
  2279  
  2280  	return nil
  2281  }
  2282  
  2283  // Images defines an image answer
  2284  type Images struct {
  2285  	// NextOffset - READ-ONLY
  2286  	NextOffset *int32 `json:"nextOffset,omitempty"`
  2287  	// Value - A list of image objects that are relevant to the query. If there are no results, the List is empty.
  2288  	Value *[]ImageObject `json:"value,omitempty"`
  2289  	// QueryExpansions - READ-ONLY
  2290  	QueryExpansions *[]Query `json:"queryExpansions,omitempty"`
  2291  	// SimilarTerms - READ-ONLY
  2292  	SimilarTerms *[]Query `json:"similarTerms,omitempty"`
  2293  	// RelatedSearches - READ-ONLY
  2294  	RelatedSearches *[]Query `json:"relatedSearches,omitempty"`
  2295  	// QueryContext - READ-ONLY
  2296  	QueryContext *QueryContext `json:"queryContext,omitempty"`
  2297  	// TotalEstimatedMatches - READ-ONLY; 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.
  2298  	TotalEstimatedMatches *int64 `json:"totalEstimatedMatches,omitempty"`
  2299  	// IsFamilyFriendly - READ-ONLY
  2300  	IsFamilyFriendly *bool `json:"isFamilyFriendly,omitempty"`
  2301  	// FollowUpQueries - READ-ONLY
  2302  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
  2303  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  2304  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  2305  	// ID - READ-ONLY; A String identifier.
  2306  	ID *string `json:"id,omitempty"`
  2307  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  2308  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  2309  }
  2310  
  2311  // MarshalJSON is the custom marshaler for Images.
  2312  func (i Images) MarshalJSON() ([]byte, error) {
  2313  	i.Type = TypeImages
  2314  	objectMap := make(map[string]interface{})
  2315  	if i.Value != nil {
  2316  		objectMap["value"] = i.Value
  2317  	}
  2318  	if i.Type != "" {
  2319  		objectMap["_type"] = i.Type
  2320  	}
  2321  	return json.Marshal(objectMap)
  2322  }
  2323  
  2324  // AsImageObject is the BasicResponseBase implementation for Images.
  2325  func (i Images) AsImageObject() (*ImageObject, bool) {
  2326  	return nil, false
  2327  }
  2328  
  2329  // AsWebPage is the BasicResponseBase implementation for Images.
  2330  func (i Images) AsWebPage() (*WebPage, bool) {
  2331  	return nil, false
  2332  }
  2333  
  2334  // AsWebWebAnswer is the BasicResponseBase implementation for Images.
  2335  func (i Images) AsWebWebAnswer() (*WebWebAnswer, bool) {
  2336  	return nil, false
  2337  }
  2338  
  2339  // AsImages is the BasicResponseBase implementation for Images.
  2340  func (i Images) AsImages() (*Images, bool) {
  2341  	return &i, true
  2342  }
  2343  
  2344  // AsNewsArticle is the BasicResponseBase implementation for Images.
  2345  func (i Images) AsNewsArticle() (*NewsArticle, bool) {
  2346  	return nil, false
  2347  }
  2348  
  2349  // AsNews is the BasicResponseBase implementation for Images.
  2350  func (i Images) AsNews() (*News, bool) {
  2351  	return nil, false
  2352  }
  2353  
  2354  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for Images.
  2355  func (i Images) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  2356  	return nil, false
  2357  }
  2358  
  2359  // AsSpellSuggestions is the BasicResponseBase implementation for Images.
  2360  func (i Images) AsSpellSuggestions() (*SpellSuggestions, bool) {
  2361  	return nil, false
  2362  }
  2363  
  2364  // AsTimeZone is the BasicResponseBase implementation for Images.
  2365  func (i Images) AsTimeZone() (*TimeZone, bool) {
  2366  	return nil, false
  2367  }
  2368  
  2369  // AsVideoObject is the BasicResponseBase implementation for Images.
  2370  func (i Images) AsVideoObject() (*VideoObject, bool) {
  2371  	return nil, false
  2372  }
  2373  
  2374  // AsVideos is the BasicResponseBase implementation for Images.
  2375  func (i Images) AsVideos() (*Videos, bool) {
  2376  	return nil, false
  2377  }
  2378  
  2379  // AsComputation is the BasicResponseBase implementation for Images.
  2380  func (i Images) AsComputation() (*Computation, bool) {
  2381  	return nil, false
  2382  }
  2383  
  2384  // AsIdentifiable is the BasicResponseBase implementation for Images.
  2385  func (i Images) AsIdentifiable() (*Identifiable, bool) {
  2386  	return nil, false
  2387  }
  2388  
  2389  // AsBasicIdentifiable is the BasicResponseBase implementation for Images.
  2390  func (i Images) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  2391  	return &i, true
  2392  }
  2393  
  2394  // AsSearchResponse is the BasicResponseBase implementation for Images.
  2395  func (i Images) AsSearchResponse() (*SearchResponse, bool) {
  2396  	return nil, false
  2397  }
  2398  
  2399  // AsResponse is the BasicResponseBase implementation for Images.
  2400  func (i Images) AsResponse() (*Response, bool) {
  2401  	return nil, false
  2402  }
  2403  
  2404  // AsBasicResponse is the BasicResponseBase implementation for Images.
  2405  func (i Images) AsBasicResponse() (BasicResponse, bool) {
  2406  	return &i, true
  2407  }
  2408  
  2409  // AsThing is the BasicResponseBase implementation for Images.
  2410  func (i Images) AsThing() (*Thing, bool) {
  2411  	return nil, false
  2412  }
  2413  
  2414  // AsBasicThing is the BasicResponseBase implementation for Images.
  2415  func (i Images) AsBasicThing() (BasicThing, bool) {
  2416  	return nil, false
  2417  }
  2418  
  2419  // AsPlaces is the BasicResponseBase implementation for Images.
  2420  func (i Images) AsPlaces() (*Places, bool) {
  2421  	return nil, false
  2422  }
  2423  
  2424  // AsSearchResultsAnswer is the BasicResponseBase implementation for Images.
  2425  func (i Images) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  2426  	return nil, false
  2427  }
  2428  
  2429  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Images.
  2430  func (i Images) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  2431  	return &i, true
  2432  }
  2433  
  2434  // AsAnswer is the BasicResponseBase implementation for Images.
  2435  func (i Images) AsAnswer() (*Answer, bool) {
  2436  	return nil, false
  2437  }
  2438  
  2439  // AsBasicAnswer is the BasicResponseBase implementation for Images.
  2440  func (i Images) AsBasicAnswer() (BasicAnswer, bool) {
  2441  	return &i, true
  2442  }
  2443  
  2444  // AsErrorResponse is the BasicResponseBase implementation for Images.
  2445  func (i Images) AsErrorResponse() (*ErrorResponse, bool) {
  2446  	return nil, false
  2447  }
  2448  
  2449  // AsCreativeWork is the BasicResponseBase implementation for Images.
  2450  func (i Images) AsCreativeWork() (*CreativeWork, bool) {
  2451  	return nil, false
  2452  }
  2453  
  2454  // AsBasicCreativeWork is the BasicResponseBase implementation for Images.
  2455  func (i Images) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  2456  	return nil, false
  2457  }
  2458  
  2459  // AsIntangible is the BasicResponseBase implementation for Images.
  2460  func (i Images) AsIntangible() (*Intangible, bool) {
  2461  	return nil, false
  2462  }
  2463  
  2464  // AsBasicIntangible is the BasicResponseBase implementation for Images.
  2465  func (i Images) AsBasicIntangible() (BasicIntangible, bool) {
  2466  	return nil, false
  2467  }
  2468  
  2469  // AsMediaObject is the BasicResponseBase implementation for Images.
  2470  func (i Images) AsMediaObject() (*MediaObject, bool) {
  2471  	return nil, false
  2472  }
  2473  
  2474  // AsBasicMediaObject is the BasicResponseBase implementation for Images.
  2475  func (i Images) AsBasicMediaObject() (BasicMediaObject, bool) {
  2476  	return nil, false
  2477  }
  2478  
  2479  // AsArticle is the BasicResponseBase implementation for Images.
  2480  func (i Images) AsArticle() (*Article, bool) {
  2481  	return nil, false
  2482  }
  2483  
  2484  // AsBasicArticle is the BasicResponseBase implementation for Images.
  2485  func (i Images) AsBasicArticle() (BasicArticle, bool) {
  2486  	return nil, false
  2487  }
  2488  
  2489  // AsStructuredValue is the BasicResponseBase implementation for Images.
  2490  func (i Images) AsStructuredValue() (*StructuredValue, bool) {
  2491  	return nil, false
  2492  }
  2493  
  2494  // AsResponseBase is the BasicResponseBase implementation for Images.
  2495  func (i Images) AsResponseBase() (*ResponseBase, bool) {
  2496  	return nil, false
  2497  }
  2498  
  2499  // AsBasicResponseBase is the BasicResponseBase implementation for Images.
  2500  func (i Images) AsBasicResponseBase() (BasicResponseBase, bool) {
  2501  	return &i, true
  2502  }
  2503  
  2504  // BasicIntangible ...
  2505  type BasicIntangible interface {
  2506  	AsStructuredValue() (*StructuredValue, bool)
  2507  	AsIntangible() (*Intangible, bool)
  2508  }
  2509  
  2510  // Intangible ...
  2511  type Intangible struct {
  2512  	// Name - READ-ONLY; The name of the thing represented by this object.
  2513  	Name *string `json:"name,omitempty"`
  2514  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
  2515  	URL *string `json:"url,omitempty"`
  2516  	// Image - READ-ONLY
  2517  	Image *ImageObject `json:"image,omitempty"`
  2518  	// Description - READ-ONLY; A short description of the item.
  2519  	Description *string `json:"description,omitempty"`
  2520  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
  2521  	BingID *string `json:"bingId,omitempty"`
  2522  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  2523  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  2524  	// ID - READ-ONLY; A String identifier.
  2525  	ID *string `json:"id,omitempty"`
  2526  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  2527  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  2528  }
  2529  
  2530  func unmarshalBasicIntangible(body []byte) (BasicIntangible, error) {
  2531  	var m map[string]interface{}
  2532  	err := json.Unmarshal(body, &m)
  2533  	if err != nil {
  2534  		return nil, err
  2535  	}
  2536  
  2537  	switch m["_type"] {
  2538  	case string(TypeStructuredValue):
  2539  		var sv StructuredValue
  2540  		err := json.Unmarshal(body, &sv)
  2541  		return sv, err
  2542  	default:
  2543  		var i Intangible
  2544  		err := json.Unmarshal(body, &i)
  2545  		return i, err
  2546  	}
  2547  }
  2548  func unmarshalBasicIntangibleArray(body []byte) ([]BasicIntangible, error) {
  2549  	var rawMessages []*json.RawMessage
  2550  	err := json.Unmarshal(body, &rawMessages)
  2551  	if err != nil {
  2552  		return nil, err
  2553  	}
  2554  
  2555  	iArray := make([]BasicIntangible, len(rawMessages))
  2556  
  2557  	for index, rawMessage := range rawMessages {
  2558  		i, err := unmarshalBasicIntangible(*rawMessage)
  2559  		if err != nil {
  2560  			return nil, err
  2561  		}
  2562  		iArray[index] = i
  2563  	}
  2564  	return iArray, nil
  2565  }
  2566  
  2567  // MarshalJSON is the custom marshaler for Intangible.
  2568  func (i Intangible) MarshalJSON() ([]byte, error) {
  2569  	i.Type = TypeIntangible
  2570  	objectMap := make(map[string]interface{})
  2571  	if i.Type != "" {
  2572  		objectMap["_type"] = i.Type
  2573  	}
  2574  	return json.Marshal(objectMap)
  2575  }
  2576  
  2577  // AsImageObject is the BasicResponseBase implementation for Intangible.
  2578  func (i Intangible) AsImageObject() (*ImageObject, bool) {
  2579  	return nil, false
  2580  }
  2581  
  2582  // AsWebPage is the BasicResponseBase implementation for Intangible.
  2583  func (i Intangible) AsWebPage() (*WebPage, bool) {
  2584  	return nil, false
  2585  }
  2586  
  2587  // AsWebWebAnswer is the BasicResponseBase implementation for Intangible.
  2588  func (i Intangible) AsWebWebAnswer() (*WebWebAnswer, bool) {
  2589  	return nil, false
  2590  }
  2591  
  2592  // AsImages is the BasicResponseBase implementation for Intangible.
  2593  func (i Intangible) AsImages() (*Images, bool) {
  2594  	return nil, false
  2595  }
  2596  
  2597  // AsNewsArticle is the BasicResponseBase implementation for Intangible.
  2598  func (i Intangible) AsNewsArticle() (*NewsArticle, bool) {
  2599  	return nil, false
  2600  }
  2601  
  2602  // AsNews is the BasicResponseBase implementation for Intangible.
  2603  func (i Intangible) AsNews() (*News, bool) {
  2604  	return nil, false
  2605  }
  2606  
  2607  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for Intangible.
  2608  func (i Intangible) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  2609  	return nil, false
  2610  }
  2611  
  2612  // AsSpellSuggestions is the BasicResponseBase implementation for Intangible.
  2613  func (i Intangible) AsSpellSuggestions() (*SpellSuggestions, bool) {
  2614  	return nil, false
  2615  }
  2616  
  2617  // AsTimeZone is the BasicResponseBase implementation for Intangible.
  2618  func (i Intangible) AsTimeZone() (*TimeZone, bool) {
  2619  	return nil, false
  2620  }
  2621  
  2622  // AsVideoObject is the BasicResponseBase implementation for Intangible.
  2623  func (i Intangible) AsVideoObject() (*VideoObject, bool) {
  2624  	return nil, false
  2625  }
  2626  
  2627  // AsVideos is the BasicResponseBase implementation for Intangible.
  2628  func (i Intangible) AsVideos() (*Videos, bool) {
  2629  	return nil, false
  2630  }
  2631  
  2632  // AsComputation is the BasicResponseBase implementation for Intangible.
  2633  func (i Intangible) AsComputation() (*Computation, bool) {
  2634  	return nil, false
  2635  }
  2636  
  2637  // AsIdentifiable is the BasicResponseBase implementation for Intangible.
  2638  func (i Intangible) AsIdentifiable() (*Identifiable, bool) {
  2639  	return nil, false
  2640  }
  2641  
  2642  // AsBasicIdentifiable is the BasicResponseBase implementation for Intangible.
  2643  func (i Intangible) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  2644  	return &i, true
  2645  }
  2646  
  2647  // AsSearchResponse is the BasicResponseBase implementation for Intangible.
  2648  func (i Intangible) AsSearchResponse() (*SearchResponse, bool) {
  2649  	return nil, false
  2650  }
  2651  
  2652  // AsResponse is the BasicResponseBase implementation for Intangible.
  2653  func (i Intangible) AsResponse() (*Response, bool) {
  2654  	return nil, false
  2655  }
  2656  
  2657  // AsBasicResponse is the BasicResponseBase implementation for Intangible.
  2658  func (i Intangible) AsBasicResponse() (BasicResponse, bool) {
  2659  	return &i, true
  2660  }
  2661  
  2662  // AsThing is the BasicResponseBase implementation for Intangible.
  2663  func (i Intangible) AsThing() (*Thing, bool) {
  2664  	return nil, false
  2665  }
  2666  
  2667  // AsBasicThing is the BasicResponseBase implementation for Intangible.
  2668  func (i Intangible) AsBasicThing() (BasicThing, bool) {
  2669  	return &i, true
  2670  }
  2671  
  2672  // AsPlaces is the BasicResponseBase implementation for Intangible.
  2673  func (i Intangible) AsPlaces() (*Places, bool) {
  2674  	return nil, false
  2675  }
  2676  
  2677  // AsSearchResultsAnswer is the BasicResponseBase implementation for Intangible.
  2678  func (i Intangible) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  2679  	return nil, false
  2680  }
  2681  
  2682  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Intangible.
  2683  func (i Intangible) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  2684  	return nil, false
  2685  }
  2686  
  2687  // AsAnswer is the BasicResponseBase implementation for Intangible.
  2688  func (i Intangible) AsAnswer() (*Answer, bool) {
  2689  	return nil, false
  2690  }
  2691  
  2692  // AsBasicAnswer is the BasicResponseBase implementation for Intangible.
  2693  func (i Intangible) AsBasicAnswer() (BasicAnswer, bool) {
  2694  	return nil, false
  2695  }
  2696  
  2697  // AsErrorResponse is the BasicResponseBase implementation for Intangible.
  2698  func (i Intangible) AsErrorResponse() (*ErrorResponse, bool) {
  2699  	return nil, false
  2700  }
  2701  
  2702  // AsCreativeWork is the BasicResponseBase implementation for Intangible.
  2703  func (i Intangible) AsCreativeWork() (*CreativeWork, bool) {
  2704  	return nil, false
  2705  }
  2706  
  2707  // AsBasicCreativeWork is the BasicResponseBase implementation for Intangible.
  2708  func (i Intangible) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  2709  	return nil, false
  2710  }
  2711  
  2712  // AsIntangible is the BasicResponseBase implementation for Intangible.
  2713  func (i Intangible) AsIntangible() (*Intangible, bool) {
  2714  	return &i, true
  2715  }
  2716  
  2717  // AsBasicIntangible is the BasicResponseBase implementation for Intangible.
  2718  func (i Intangible) AsBasicIntangible() (BasicIntangible, bool) {
  2719  	return &i, true
  2720  }
  2721  
  2722  // AsMediaObject is the BasicResponseBase implementation for Intangible.
  2723  func (i Intangible) AsMediaObject() (*MediaObject, bool) {
  2724  	return nil, false
  2725  }
  2726  
  2727  // AsBasicMediaObject is the BasicResponseBase implementation for Intangible.
  2728  func (i Intangible) AsBasicMediaObject() (BasicMediaObject, bool) {
  2729  	return nil, false
  2730  }
  2731  
  2732  // AsArticle is the BasicResponseBase implementation for Intangible.
  2733  func (i Intangible) AsArticle() (*Article, bool) {
  2734  	return nil, false
  2735  }
  2736  
  2737  // AsBasicArticle is the BasicResponseBase implementation for Intangible.
  2738  func (i Intangible) AsBasicArticle() (BasicArticle, bool) {
  2739  	return nil, false
  2740  }
  2741  
  2742  // AsStructuredValue is the BasicResponseBase implementation for Intangible.
  2743  func (i Intangible) AsStructuredValue() (*StructuredValue, bool) {
  2744  	return nil, false
  2745  }
  2746  
  2747  // AsResponseBase is the BasicResponseBase implementation for Intangible.
  2748  func (i Intangible) AsResponseBase() (*ResponseBase, bool) {
  2749  	return nil, false
  2750  }
  2751  
  2752  // AsBasicResponseBase is the BasicResponseBase implementation for Intangible.
  2753  func (i Intangible) AsBasicResponseBase() (BasicResponseBase, bool) {
  2754  	return &i, true
  2755  }
  2756  
  2757  // BasicMediaObject ...
  2758  type BasicMediaObject interface {
  2759  	AsImageObject() (*ImageObject, bool)
  2760  	AsVideoObject() (*VideoObject, bool)
  2761  	AsMediaObject() (*MediaObject, bool)
  2762  }
  2763  
  2764  // MediaObject ...
  2765  type MediaObject struct {
  2766  	// ContentURL - READ-ONLY; Original URL to retrieve the source (file) for the media object (e.g the source URL for the image).
  2767  	ContentURL *string `json:"contentUrl,omitempty"`
  2768  	// HostPageURL - READ-ONLY; URL of the page that hosts the media object.
  2769  	HostPageURL *string `json:"hostPageUrl,omitempty"`
  2770  	// Width - READ-ONLY; The width of the source media object, in pixels.
  2771  	Width *int32 `json:"width,omitempty"`
  2772  	// Height - READ-ONLY; The height of the source media object, in pixels.
  2773  	Height *int32 `json:"height,omitempty"`
  2774  	// ThumbnailURL - READ-ONLY; The URL to a thumbnail of the item.
  2775  	ThumbnailURL *string `json:"thumbnailUrl,omitempty"`
  2776  	// Provider - READ-ONLY; The source of the creative work.
  2777  	Provider *[]BasicThing `json:"provider,omitempty"`
  2778  	// Text - READ-ONLY
  2779  	Text *string `json:"text,omitempty"`
  2780  	// Name - READ-ONLY; The name of the thing represented by this object.
  2781  	Name *string `json:"name,omitempty"`
  2782  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
  2783  	URL *string `json:"url,omitempty"`
  2784  	// Image - READ-ONLY
  2785  	Image *ImageObject `json:"image,omitempty"`
  2786  	// Description - READ-ONLY; A short description of the item.
  2787  	Description *string `json:"description,omitempty"`
  2788  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
  2789  	BingID *string `json:"bingId,omitempty"`
  2790  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  2791  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  2792  	// ID - READ-ONLY; A String identifier.
  2793  	ID *string `json:"id,omitempty"`
  2794  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  2795  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  2796  }
  2797  
  2798  func unmarshalBasicMediaObject(body []byte) (BasicMediaObject, error) {
  2799  	var m map[string]interface{}
  2800  	err := json.Unmarshal(body, &m)
  2801  	if err != nil {
  2802  		return nil, err
  2803  	}
  2804  
  2805  	switch m["_type"] {
  2806  	case string(TypeImageObject):
  2807  		var ioVar ImageObject
  2808  		err := json.Unmarshal(body, &ioVar)
  2809  		return ioVar, err
  2810  	case string(TypeVideoObject):
  2811  		var vo VideoObject
  2812  		err := json.Unmarshal(body, &vo)
  2813  		return vo, err
  2814  	default:
  2815  		var mo MediaObject
  2816  		err := json.Unmarshal(body, &mo)
  2817  		return mo, err
  2818  	}
  2819  }
  2820  func unmarshalBasicMediaObjectArray(body []byte) ([]BasicMediaObject, error) {
  2821  	var rawMessages []*json.RawMessage
  2822  	err := json.Unmarshal(body, &rawMessages)
  2823  	if err != nil {
  2824  		return nil, err
  2825  	}
  2826  
  2827  	moArray := make([]BasicMediaObject, len(rawMessages))
  2828  
  2829  	for index, rawMessage := range rawMessages {
  2830  		mo, err := unmarshalBasicMediaObject(*rawMessage)
  2831  		if err != nil {
  2832  			return nil, err
  2833  		}
  2834  		moArray[index] = mo
  2835  	}
  2836  	return moArray, nil
  2837  }
  2838  
  2839  // MarshalJSON is the custom marshaler for MediaObject.
  2840  func (mo MediaObject) MarshalJSON() ([]byte, error) {
  2841  	mo.Type = TypeMediaObject
  2842  	objectMap := make(map[string]interface{})
  2843  	if mo.Type != "" {
  2844  		objectMap["_type"] = mo.Type
  2845  	}
  2846  	return json.Marshal(objectMap)
  2847  }
  2848  
  2849  // AsImageObject is the BasicResponseBase implementation for MediaObject.
  2850  func (mo MediaObject) AsImageObject() (*ImageObject, bool) {
  2851  	return nil, false
  2852  }
  2853  
  2854  // AsWebPage is the BasicResponseBase implementation for MediaObject.
  2855  func (mo MediaObject) AsWebPage() (*WebPage, bool) {
  2856  	return nil, false
  2857  }
  2858  
  2859  // AsWebWebAnswer is the BasicResponseBase implementation for MediaObject.
  2860  func (mo MediaObject) AsWebWebAnswer() (*WebWebAnswer, bool) {
  2861  	return nil, false
  2862  }
  2863  
  2864  // AsImages is the BasicResponseBase implementation for MediaObject.
  2865  func (mo MediaObject) AsImages() (*Images, bool) {
  2866  	return nil, false
  2867  }
  2868  
  2869  // AsNewsArticle is the BasicResponseBase implementation for MediaObject.
  2870  func (mo MediaObject) AsNewsArticle() (*NewsArticle, bool) {
  2871  	return nil, false
  2872  }
  2873  
  2874  // AsNews is the BasicResponseBase implementation for MediaObject.
  2875  func (mo MediaObject) AsNews() (*News, bool) {
  2876  	return nil, false
  2877  }
  2878  
  2879  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for MediaObject.
  2880  func (mo MediaObject) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  2881  	return nil, false
  2882  }
  2883  
  2884  // AsSpellSuggestions is the BasicResponseBase implementation for MediaObject.
  2885  func (mo MediaObject) AsSpellSuggestions() (*SpellSuggestions, bool) {
  2886  	return nil, false
  2887  }
  2888  
  2889  // AsTimeZone is the BasicResponseBase implementation for MediaObject.
  2890  func (mo MediaObject) AsTimeZone() (*TimeZone, bool) {
  2891  	return nil, false
  2892  }
  2893  
  2894  // AsVideoObject is the BasicResponseBase implementation for MediaObject.
  2895  func (mo MediaObject) AsVideoObject() (*VideoObject, bool) {
  2896  	return nil, false
  2897  }
  2898  
  2899  // AsVideos is the BasicResponseBase implementation for MediaObject.
  2900  func (mo MediaObject) AsVideos() (*Videos, bool) {
  2901  	return nil, false
  2902  }
  2903  
  2904  // AsComputation is the BasicResponseBase implementation for MediaObject.
  2905  func (mo MediaObject) AsComputation() (*Computation, bool) {
  2906  	return nil, false
  2907  }
  2908  
  2909  // AsIdentifiable is the BasicResponseBase implementation for MediaObject.
  2910  func (mo MediaObject) AsIdentifiable() (*Identifiable, bool) {
  2911  	return nil, false
  2912  }
  2913  
  2914  // AsBasicIdentifiable is the BasicResponseBase implementation for MediaObject.
  2915  func (mo MediaObject) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  2916  	return &mo, true
  2917  }
  2918  
  2919  // AsSearchResponse is the BasicResponseBase implementation for MediaObject.
  2920  func (mo MediaObject) AsSearchResponse() (*SearchResponse, bool) {
  2921  	return nil, false
  2922  }
  2923  
  2924  // AsResponse is the BasicResponseBase implementation for MediaObject.
  2925  func (mo MediaObject) AsResponse() (*Response, bool) {
  2926  	return nil, false
  2927  }
  2928  
  2929  // AsBasicResponse is the BasicResponseBase implementation for MediaObject.
  2930  func (mo MediaObject) AsBasicResponse() (BasicResponse, bool) {
  2931  	return &mo, true
  2932  }
  2933  
  2934  // AsThing is the BasicResponseBase implementation for MediaObject.
  2935  func (mo MediaObject) AsThing() (*Thing, bool) {
  2936  	return nil, false
  2937  }
  2938  
  2939  // AsBasicThing is the BasicResponseBase implementation for MediaObject.
  2940  func (mo MediaObject) AsBasicThing() (BasicThing, bool) {
  2941  	return &mo, true
  2942  }
  2943  
  2944  // AsPlaces is the BasicResponseBase implementation for MediaObject.
  2945  func (mo MediaObject) AsPlaces() (*Places, bool) {
  2946  	return nil, false
  2947  }
  2948  
  2949  // AsSearchResultsAnswer is the BasicResponseBase implementation for MediaObject.
  2950  func (mo MediaObject) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  2951  	return nil, false
  2952  }
  2953  
  2954  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for MediaObject.
  2955  func (mo MediaObject) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  2956  	return nil, false
  2957  }
  2958  
  2959  // AsAnswer is the BasicResponseBase implementation for MediaObject.
  2960  func (mo MediaObject) AsAnswer() (*Answer, bool) {
  2961  	return nil, false
  2962  }
  2963  
  2964  // AsBasicAnswer is the BasicResponseBase implementation for MediaObject.
  2965  func (mo MediaObject) AsBasicAnswer() (BasicAnswer, bool) {
  2966  	return nil, false
  2967  }
  2968  
  2969  // AsErrorResponse is the BasicResponseBase implementation for MediaObject.
  2970  func (mo MediaObject) AsErrorResponse() (*ErrorResponse, bool) {
  2971  	return nil, false
  2972  }
  2973  
  2974  // AsCreativeWork is the BasicResponseBase implementation for MediaObject.
  2975  func (mo MediaObject) AsCreativeWork() (*CreativeWork, bool) {
  2976  	return nil, false
  2977  }
  2978  
  2979  // AsBasicCreativeWork is the BasicResponseBase implementation for MediaObject.
  2980  func (mo MediaObject) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  2981  	return &mo, true
  2982  }
  2983  
  2984  // AsIntangible is the BasicResponseBase implementation for MediaObject.
  2985  func (mo MediaObject) AsIntangible() (*Intangible, bool) {
  2986  	return nil, false
  2987  }
  2988  
  2989  // AsBasicIntangible is the BasicResponseBase implementation for MediaObject.
  2990  func (mo MediaObject) AsBasicIntangible() (BasicIntangible, bool) {
  2991  	return nil, false
  2992  }
  2993  
  2994  // AsMediaObject is the BasicResponseBase implementation for MediaObject.
  2995  func (mo MediaObject) AsMediaObject() (*MediaObject, bool) {
  2996  	return &mo, true
  2997  }
  2998  
  2999  // AsBasicMediaObject is the BasicResponseBase implementation for MediaObject.
  3000  func (mo MediaObject) AsBasicMediaObject() (BasicMediaObject, bool) {
  3001  	return &mo, true
  3002  }
  3003  
  3004  // AsArticle is the BasicResponseBase implementation for MediaObject.
  3005  func (mo MediaObject) AsArticle() (*Article, bool) {
  3006  	return nil, false
  3007  }
  3008  
  3009  // AsBasicArticle is the BasicResponseBase implementation for MediaObject.
  3010  func (mo MediaObject) AsBasicArticle() (BasicArticle, bool) {
  3011  	return nil, false
  3012  }
  3013  
  3014  // AsStructuredValue is the BasicResponseBase implementation for MediaObject.
  3015  func (mo MediaObject) AsStructuredValue() (*StructuredValue, bool) {
  3016  	return nil, false
  3017  }
  3018  
  3019  // AsResponseBase is the BasicResponseBase implementation for MediaObject.
  3020  func (mo MediaObject) AsResponseBase() (*ResponseBase, bool) {
  3021  	return nil, false
  3022  }
  3023  
  3024  // AsBasicResponseBase is the BasicResponseBase implementation for MediaObject.
  3025  func (mo MediaObject) AsBasicResponseBase() (BasicResponseBase, bool) {
  3026  	return &mo, true
  3027  }
  3028  
  3029  // UnmarshalJSON is the custom unmarshaler for MediaObject struct.
  3030  func (mo *MediaObject) UnmarshalJSON(body []byte) error {
  3031  	var m map[string]*json.RawMessage
  3032  	err := json.Unmarshal(body, &m)
  3033  	if err != nil {
  3034  		return err
  3035  	}
  3036  	for k, v := range m {
  3037  		switch k {
  3038  		case "contentUrl":
  3039  			if v != nil {
  3040  				var contentURL string
  3041  				err = json.Unmarshal(*v, &contentURL)
  3042  				if err != nil {
  3043  					return err
  3044  				}
  3045  				mo.ContentURL = &contentURL
  3046  			}
  3047  		case "hostPageUrl":
  3048  			if v != nil {
  3049  				var hostPageURL string
  3050  				err = json.Unmarshal(*v, &hostPageURL)
  3051  				if err != nil {
  3052  					return err
  3053  				}
  3054  				mo.HostPageURL = &hostPageURL
  3055  			}
  3056  		case "width":
  3057  			if v != nil {
  3058  				var width int32
  3059  				err = json.Unmarshal(*v, &width)
  3060  				if err != nil {
  3061  					return err
  3062  				}
  3063  				mo.Width = &width
  3064  			}
  3065  		case "height":
  3066  			if v != nil {
  3067  				var height int32
  3068  				err = json.Unmarshal(*v, &height)
  3069  				if err != nil {
  3070  					return err
  3071  				}
  3072  				mo.Height = &height
  3073  			}
  3074  		case "thumbnailUrl":
  3075  			if v != nil {
  3076  				var thumbnailURL string
  3077  				err = json.Unmarshal(*v, &thumbnailURL)
  3078  				if err != nil {
  3079  					return err
  3080  				}
  3081  				mo.ThumbnailURL = &thumbnailURL
  3082  			}
  3083  		case "provider":
  3084  			if v != nil {
  3085  				provider, err := unmarshalBasicThingArray(*v)
  3086  				if err != nil {
  3087  					return err
  3088  				}
  3089  				mo.Provider = &provider
  3090  			}
  3091  		case "text":
  3092  			if v != nil {
  3093  				var textVar string
  3094  				err = json.Unmarshal(*v, &textVar)
  3095  				if err != nil {
  3096  					return err
  3097  				}
  3098  				mo.Text = &textVar
  3099  			}
  3100  		case "name":
  3101  			if v != nil {
  3102  				var name string
  3103  				err = json.Unmarshal(*v, &name)
  3104  				if err != nil {
  3105  					return err
  3106  				}
  3107  				mo.Name = &name
  3108  			}
  3109  		case "url":
  3110  			if v != nil {
  3111  				var URL string
  3112  				err = json.Unmarshal(*v, &URL)
  3113  				if err != nil {
  3114  					return err
  3115  				}
  3116  				mo.URL = &URL
  3117  			}
  3118  		case "image":
  3119  			if v != nil {
  3120  				var imageVar ImageObject
  3121  				err = json.Unmarshal(*v, &imageVar)
  3122  				if err != nil {
  3123  					return err
  3124  				}
  3125  				mo.Image = &imageVar
  3126  			}
  3127  		case "description":
  3128  			if v != nil {
  3129  				var description string
  3130  				err = json.Unmarshal(*v, &description)
  3131  				if err != nil {
  3132  					return err
  3133  				}
  3134  				mo.Description = &description
  3135  			}
  3136  		case "bingId":
  3137  			if v != nil {
  3138  				var bingID string
  3139  				err = json.Unmarshal(*v, &bingID)
  3140  				if err != nil {
  3141  					return err
  3142  				}
  3143  				mo.BingID = &bingID
  3144  			}
  3145  		case "webSearchUrl":
  3146  			if v != nil {
  3147  				var webSearchURL string
  3148  				err = json.Unmarshal(*v, &webSearchURL)
  3149  				if err != nil {
  3150  					return err
  3151  				}
  3152  				mo.WebSearchURL = &webSearchURL
  3153  			}
  3154  		case "id":
  3155  			if v != nil {
  3156  				var ID string
  3157  				err = json.Unmarshal(*v, &ID)
  3158  				if err != nil {
  3159  					return err
  3160  				}
  3161  				mo.ID = &ID
  3162  			}
  3163  		case "_type":
  3164  			if v != nil {
  3165  				var typeVar TypeBasicResponseBase
  3166  				err = json.Unmarshal(*v, &typeVar)
  3167  				if err != nil {
  3168  					return err
  3169  				}
  3170  				mo.Type = typeVar
  3171  			}
  3172  		}
  3173  	}
  3174  
  3175  	return nil
  3176  }
  3177  
  3178  // News defines a news answer.
  3179  type News struct {
  3180  	// Value - 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.
  3181  	Value *[]NewsArticle `json:"value,omitempty"`
  3182  	// Location - READ-ONLY
  3183  	Location *string `json:"location,omitempty"`
  3184  	// QueryContext - READ-ONLY
  3185  	QueryContext *QueryContext `json:"queryContext,omitempty"`
  3186  	// TotalEstimatedMatches - READ-ONLY; 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.
  3187  	TotalEstimatedMatches *int64 `json:"totalEstimatedMatches,omitempty"`
  3188  	// IsFamilyFriendly - READ-ONLY
  3189  	IsFamilyFriendly *bool `json:"isFamilyFriendly,omitempty"`
  3190  	// FollowUpQueries - READ-ONLY
  3191  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
  3192  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  3193  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  3194  	// ID - READ-ONLY; A String identifier.
  3195  	ID *string `json:"id,omitempty"`
  3196  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  3197  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  3198  }
  3199  
  3200  // MarshalJSON is the custom marshaler for News.
  3201  func (n News) MarshalJSON() ([]byte, error) {
  3202  	n.Type = TypeNews
  3203  	objectMap := make(map[string]interface{})
  3204  	if n.Value != nil {
  3205  		objectMap["value"] = n.Value
  3206  	}
  3207  	if n.Type != "" {
  3208  		objectMap["_type"] = n.Type
  3209  	}
  3210  	return json.Marshal(objectMap)
  3211  }
  3212  
  3213  // AsImageObject is the BasicResponseBase implementation for News.
  3214  func (n News) AsImageObject() (*ImageObject, bool) {
  3215  	return nil, false
  3216  }
  3217  
  3218  // AsWebPage is the BasicResponseBase implementation for News.
  3219  func (n News) AsWebPage() (*WebPage, bool) {
  3220  	return nil, false
  3221  }
  3222  
  3223  // AsWebWebAnswer is the BasicResponseBase implementation for News.
  3224  func (n News) AsWebWebAnswer() (*WebWebAnswer, bool) {
  3225  	return nil, false
  3226  }
  3227  
  3228  // AsImages is the BasicResponseBase implementation for News.
  3229  func (n News) AsImages() (*Images, bool) {
  3230  	return nil, false
  3231  }
  3232  
  3233  // AsNewsArticle is the BasicResponseBase implementation for News.
  3234  func (n News) AsNewsArticle() (*NewsArticle, bool) {
  3235  	return nil, false
  3236  }
  3237  
  3238  // AsNews is the BasicResponseBase implementation for News.
  3239  func (n News) AsNews() (*News, bool) {
  3240  	return &n, true
  3241  }
  3242  
  3243  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for News.
  3244  func (n News) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  3245  	return nil, false
  3246  }
  3247  
  3248  // AsSpellSuggestions is the BasicResponseBase implementation for News.
  3249  func (n News) AsSpellSuggestions() (*SpellSuggestions, bool) {
  3250  	return nil, false
  3251  }
  3252  
  3253  // AsTimeZone is the BasicResponseBase implementation for News.
  3254  func (n News) AsTimeZone() (*TimeZone, bool) {
  3255  	return nil, false
  3256  }
  3257  
  3258  // AsVideoObject is the BasicResponseBase implementation for News.
  3259  func (n News) AsVideoObject() (*VideoObject, bool) {
  3260  	return nil, false
  3261  }
  3262  
  3263  // AsVideos is the BasicResponseBase implementation for News.
  3264  func (n News) AsVideos() (*Videos, bool) {
  3265  	return nil, false
  3266  }
  3267  
  3268  // AsComputation is the BasicResponseBase implementation for News.
  3269  func (n News) AsComputation() (*Computation, bool) {
  3270  	return nil, false
  3271  }
  3272  
  3273  // AsIdentifiable is the BasicResponseBase implementation for News.
  3274  func (n News) AsIdentifiable() (*Identifiable, bool) {
  3275  	return nil, false
  3276  }
  3277  
  3278  // AsBasicIdentifiable is the BasicResponseBase implementation for News.
  3279  func (n News) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  3280  	return &n, true
  3281  }
  3282  
  3283  // AsSearchResponse is the BasicResponseBase implementation for News.
  3284  func (n News) AsSearchResponse() (*SearchResponse, bool) {
  3285  	return nil, false
  3286  }
  3287  
  3288  // AsResponse is the BasicResponseBase implementation for News.
  3289  func (n News) AsResponse() (*Response, bool) {
  3290  	return nil, false
  3291  }
  3292  
  3293  // AsBasicResponse is the BasicResponseBase implementation for News.
  3294  func (n News) AsBasicResponse() (BasicResponse, bool) {
  3295  	return &n, true
  3296  }
  3297  
  3298  // AsThing is the BasicResponseBase implementation for News.
  3299  func (n News) AsThing() (*Thing, bool) {
  3300  	return nil, false
  3301  }
  3302  
  3303  // AsBasicThing is the BasicResponseBase implementation for News.
  3304  func (n News) AsBasicThing() (BasicThing, bool) {
  3305  	return nil, false
  3306  }
  3307  
  3308  // AsPlaces is the BasicResponseBase implementation for News.
  3309  func (n News) AsPlaces() (*Places, bool) {
  3310  	return nil, false
  3311  }
  3312  
  3313  // AsSearchResultsAnswer is the BasicResponseBase implementation for News.
  3314  func (n News) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  3315  	return nil, false
  3316  }
  3317  
  3318  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for News.
  3319  func (n News) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  3320  	return &n, true
  3321  }
  3322  
  3323  // AsAnswer is the BasicResponseBase implementation for News.
  3324  func (n News) AsAnswer() (*Answer, bool) {
  3325  	return nil, false
  3326  }
  3327  
  3328  // AsBasicAnswer is the BasicResponseBase implementation for News.
  3329  func (n News) AsBasicAnswer() (BasicAnswer, bool) {
  3330  	return &n, true
  3331  }
  3332  
  3333  // AsErrorResponse is the BasicResponseBase implementation for News.
  3334  func (n News) AsErrorResponse() (*ErrorResponse, bool) {
  3335  	return nil, false
  3336  }
  3337  
  3338  // AsCreativeWork is the BasicResponseBase implementation for News.
  3339  func (n News) AsCreativeWork() (*CreativeWork, bool) {
  3340  	return nil, false
  3341  }
  3342  
  3343  // AsBasicCreativeWork is the BasicResponseBase implementation for News.
  3344  func (n News) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  3345  	return nil, false
  3346  }
  3347  
  3348  // AsIntangible is the BasicResponseBase implementation for News.
  3349  func (n News) AsIntangible() (*Intangible, bool) {
  3350  	return nil, false
  3351  }
  3352  
  3353  // AsBasicIntangible is the BasicResponseBase implementation for News.
  3354  func (n News) AsBasicIntangible() (BasicIntangible, bool) {
  3355  	return nil, false
  3356  }
  3357  
  3358  // AsMediaObject is the BasicResponseBase implementation for News.
  3359  func (n News) AsMediaObject() (*MediaObject, bool) {
  3360  	return nil, false
  3361  }
  3362  
  3363  // AsBasicMediaObject is the BasicResponseBase implementation for News.
  3364  func (n News) AsBasicMediaObject() (BasicMediaObject, bool) {
  3365  	return nil, false
  3366  }
  3367  
  3368  // AsArticle is the BasicResponseBase implementation for News.
  3369  func (n News) AsArticle() (*Article, bool) {
  3370  	return nil, false
  3371  }
  3372  
  3373  // AsBasicArticle is the BasicResponseBase implementation for News.
  3374  func (n News) AsBasicArticle() (BasicArticle, bool) {
  3375  	return nil, false
  3376  }
  3377  
  3378  // AsStructuredValue is the BasicResponseBase implementation for News.
  3379  func (n News) AsStructuredValue() (*StructuredValue, bool) {
  3380  	return nil, false
  3381  }
  3382  
  3383  // AsResponseBase is the BasicResponseBase implementation for News.
  3384  func (n News) AsResponseBase() (*ResponseBase, bool) {
  3385  	return nil, false
  3386  }
  3387  
  3388  // AsBasicResponseBase is the BasicResponseBase implementation for News.
  3389  func (n News) AsBasicResponseBase() (BasicResponseBase, bool) {
  3390  	return &n, true
  3391  }
  3392  
  3393  // NewsArticle defines a news article.
  3394  type NewsArticle struct {
  3395  	// WordCount - READ-ONLY; The number of words in the text of the Article.
  3396  	WordCount *int32 `json:"wordCount,omitempty"`
  3397  	// ThumbnailURL - READ-ONLY; The URL to a thumbnail of the item.
  3398  	ThumbnailURL *string `json:"thumbnailUrl,omitempty"`
  3399  	// Provider - READ-ONLY; The source of the creative work.
  3400  	Provider *[]BasicThing `json:"provider,omitempty"`
  3401  	// Text - READ-ONLY
  3402  	Text *string `json:"text,omitempty"`
  3403  	// Name - READ-ONLY; The name of the thing represented by this object.
  3404  	Name *string `json:"name,omitempty"`
  3405  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
  3406  	URL *string `json:"url,omitempty"`
  3407  	// Image - READ-ONLY
  3408  	Image *ImageObject `json:"image,omitempty"`
  3409  	// Description - READ-ONLY; A short description of the item.
  3410  	Description *string `json:"description,omitempty"`
  3411  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
  3412  	BingID *string `json:"bingId,omitempty"`
  3413  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  3414  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  3415  	// ID - READ-ONLY; A String identifier.
  3416  	ID *string `json:"id,omitempty"`
  3417  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  3418  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  3419  }
  3420  
  3421  // MarshalJSON is the custom marshaler for NewsArticle.
  3422  func (na NewsArticle) MarshalJSON() ([]byte, error) {
  3423  	na.Type = TypeNewsArticle
  3424  	objectMap := make(map[string]interface{})
  3425  	if na.Type != "" {
  3426  		objectMap["_type"] = na.Type
  3427  	}
  3428  	return json.Marshal(objectMap)
  3429  }
  3430  
  3431  // AsImageObject is the BasicResponseBase implementation for NewsArticle.
  3432  func (na NewsArticle) AsImageObject() (*ImageObject, bool) {
  3433  	return nil, false
  3434  }
  3435  
  3436  // AsWebPage is the BasicResponseBase implementation for NewsArticle.
  3437  func (na NewsArticle) AsWebPage() (*WebPage, bool) {
  3438  	return nil, false
  3439  }
  3440  
  3441  // AsWebWebAnswer is the BasicResponseBase implementation for NewsArticle.
  3442  func (na NewsArticle) AsWebWebAnswer() (*WebWebAnswer, bool) {
  3443  	return nil, false
  3444  }
  3445  
  3446  // AsImages is the BasicResponseBase implementation for NewsArticle.
  3447  func (na NewsArticle) AsImages() (*Images, bool) {
  3448  	return nil, false
  3449  }
  3450  
  3451  // AsNewsArticle is the BasicResponseBase implementation for NewsArticle.
  3452  func (na NewsArticle) AsNewsArticle() (*NewsArticle, bool) {
  3453  	return &na, true
  3454  }
  3455  
  3456  // AsNews is the BasicResponseBase implementation for NewsArticle.
  3457  func (na NewsArticle) AsNews() (*News, bool) {
  3458  	return nil, false
  3459  }
  3460  
  3461  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for NewsArticle.
  3462  func (na NewsArticle) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  3463  	return nil, false
  3464  }
  3465  
  3466  // AsSpellSuggestions is the BasicResponseBase implementation for NewsArticle.
  3467  func (na NewsArticle) AsSpellSuggestions() (*SpellSuggestions, bool) {
  3468  	return nil, false
  3469  }
  3470  
  3471  // AsTimeZone is the BasicResponseBase implementation for NewsArticle.
  3472  func (na NewsArticle) AsTimeZone() (*TimeZone, bool) {
  3473  	return nil, false
  3474  }
  3475  
  3476  // AsVideoObject is the BasicResponseBase implementation for NewsArticle.
  3477  func (na NewsArticle) AsVideoObject() (*VideoObject, bool) {
  3478  	return nil, false
  3479  }
  3480  
  3481  // AsVideos is the BasicResponseBase implementation for NewsArticle.
  3482  func (na NewsArticle) AsVideos() (*Videos, bool) {
  3483  	return nil, false
  3484  }
  3485  
  3486  // AsComputation is the BasicResponseBase implementation for NewsArticle.
  3487  func (na NewsArticle) AsComputation() (*Computation, bool) {
  3488  	return nil, false
  3489  }
  3490  
  3491  // AsIdentifiable is the BasicResponseBase implementation for NewsArticle.
  3492  func (na NewsArticle) AsIdentifiable() (*Identifiable, bool) {
  3493  	return nil, false
  3494  }
  3495  
  3496  // AsBasicIdentifiable is the BasicResponseBase implementation for NewsArticle.
  3497  func (na NewsArticle) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  3498  	return &na, true
  3499  }
  3500  
  3501  // AsSearchResponse is the BasicResponseBase implementation for NewsArticle.
  3502  func (na NewsArticle) AsSearchResponse() (*SearchResponse, bool) {
  3503  	return nil, false
  3504  }
  3505  
  3506  // AsResponse is the BasicResponseBase implementation for NewsArticle.
  3507  func (na NewsArticle) AsResponse() (*Response, bool) {
  3508  	return nil, false
  3509  }
  3510  
  3511  // AsBasicResponse is the BasicResponseBase implementation for NewsArticle.
  3512  func (na NewsArticle) AsBasicResponse() (BasicResponse, bool) {
  3513  	return &na, true
  3514  }
  3515  
  3516  // AsThing is the BasicResponseBase implementation for NewsArticle.
  3517  func (na NewsArticle) AsThing() (*Thing, bool) {
  3518  	return nil, false
  3519  }
  3520  
  3521  // AsBasicThing is the BasicResponseBase implementation for NewsArticle.
  3522  func (na NewsArticle) AsBasicThing() (BasicThing, bool) {
  3523  	return &na, true
  3524  }
  3525  
  3526  // AsPlaces is the BasicResponseBase implementation for NewsArticle.
  3527  func (na NewsArticle) AsPlaces() (*Places, bool) {
  3528  	return nil, false
  3529  }
  3530  
  3531  // AsSearchResultsAnswer is the BasicResponseBase implementation for NewsArticle.
  3532  func (na NewsArticle) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  3533  	return nil, false
  3534  }
  3535  
  3536  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for NewsArticle.
  3537  func (na NewsArticle) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  3538  	return nil, false
  3539  }
  3540  
  3541  // AsAnswer is the BasicResponseBase implementation for NewsArticle.
  3542  func (na NewsArticle) AsAnswer() (*Answer, bool) {
  3543  	return nil, false
  3544  }
  3545  
  3546  // AsBasicAnswer is the BasicResponseBase implementation for NewsArticle.
  3547  func (na NewsArticle) AsBasicAnswer() (BasicAnswer, bool) {
  3548  	return nil, false
  3549  }
  3550  
  3551  // AsErrorResponse is the BasicResponseBase implementation for NewsArticle.
  3552  func (na NewsArticle) AsErrorResponse() (*ErrorResponse, bool) {
  3553  	return nil, false
  3554  }
  3555  
  3556  // AsCreativeWork is the BasicResponseBase implementation for NewsArticle.
  3557  func (na NewsArticle) AsCreativeWork() (*CreativeWork, bool) {
  3558  	return nil, false
  3559  }
  3560  
  3561  // AsBasicCreativeWork is the BasicResponseBase implementation for NewsArticle.
  3562  func (na NewsArticle) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  3563  	return &na, true
  3564  }
  3565  
  3566  // AsIntangible is the BasicResponseBase implementation for NewsArticle.
  3567  func (na NewsArticle) AsIntangible() (*Intangible, bool) {
  3568  	return nil, false
  3569  }
  3570  
  3571  // AsBasicIntangible is the BasicResponseBase implementation for NewsArticle.
  3572  func (na NewsArticle) AsBasicIntangible() (BasicIntangible, bool) {
  3573  	return nil, false
  3574  }
  3575  
  3576  // AsMediaObject is the BasicResponseBase implementation for NewsArticle.
  3577  func (na NewsArticle) AsMediaObject() (*MediaObject, bool) {
  3578  	return nil, false
  3579  }
  3580  
  3581  // AsBasicMediaObject is the BasicResponseBase implementation for NewsArticle.
  3582  func (na NewsArticle) AsBasicMediaObject() (BasicMediaObject, bool) {
  3583  	return nil, false
  3584  }
  3585  
  3586  // AsArticle is the BasicResponseBase implementation for NewsArticle.
  3587  func (na NewsArticle) AsArticle() (*Article, bool) {
  3588  	return nil, false
  3589  }
  3590  
  3591  // AsBasicArticle is the BasicResponseBase implementation for NewsArticle.
  3592  func (na NewsArticle) AsBasicArticle() (BasicArticle, bool) {
  3593  	return &na, true
  3594  }
  3595  
  3596  // AsStructuredValue is the BasicResponseBase implementation for NewsArticle.
  3597  func (na NewsArticle) AsStructuredValue() (*StructuredValue, bool) {
  3598  	return nil, false
  3599  }
  3600  
  3601  // AsResponseBase is the BasicResponseBase implementation for NewsArticle.
  3602  func (na NewsArticle) AsResponseBase() (*ResponseBase, bool) {
  3603  	return nil, false
  3604  }
  3605  
  3606  // AsBasicResponseBase is the BasicResponseBase implementation for NewsArticle.
  3607  func (na NewsArticle) AsBasicResponseBase() (BasicResponseBase, bool) {
  3608  	return &na, true
  3609  }
  3610  
  3611  // UnmarshalJSON is the custom unmarshaler for NewsArticle struct.
  3612  func (na *NewsArticle) UnmarshalJSON(body []byte) error {
  3613  	var m map[string]*json.RawMessage
  3614  	err := json.Unmarshal(body, &m)
  3615  	if err != nil {
  3616  		return err
  3617  	}
  3618  	for k, v := range m {
  3619  		switch k {
  3620  		case "wordCount":
  3621  			if v != nil {
  3622  				var wordCount int32
  3623  				err = json.Unmarshal(*v, &wordCount)
  3624  				if err != nil {
  3625  					return err
  3626  				}
  3627  				na.WordCount = &wordCount
  3628  			}
  3629  		case "thumbnailUrl":
  3630  			if v != nil {
  3631  				var thumbnailURL string
  3632  				err = json.Unmarshal(*v, &thumbnailURL)
  3633  				if err != nil {
  3634  					return err
  3635  				}
  3636  				na.ThumbnailURL = &thumbnailURL
  3637  			}
  3638  		case "provider":
  3639  			if v != nil {
  3640  				provider, err := unmarshalBasicThingArray(*v)
  3641  				if err != nil {
  3642  					return err
  3643  				}
  3644  				na.Provider = &provider
  3645  			}
  3646  		case "text":
  3647  			if v != nil {
  3648  				var textVar string
  3649  				err = json.Unmarshal(*v, &textVar)
  3650  				if err != nil {
  3651  					return err
  3652  				}
  3653  				na.Text = &textVar
  3654  			}
  3655  		case "name":
  3656  			if v != nil {
  3657  				var name string
  3658  				err = json.Unmarshal(*v, &name)
  3659  				if err != nil {
  3660  					return err
  3661  				}
  3662  				na.Name = &name
  3663  			}
  3664  		case "url":
  3665  			if v != nil {
  3666  				var URL string
  3667  				err = json.Unmarshal(*v, &URL)
  3668  				if err != nil {
  3669  					return err
  3670  				}
  3671  				na.URL = &URL
  3672  			}
  3673  		case "image":
  3674  			if v != nil {
  3675  				var imageVar ImageObject
  3676  				err = json.Unmarshal(*v, &imageVar)
  3677  				if err != nil {
  3678  					return err
  3679  				}
  3680  				na.Image = &imageVar
  3681  			}
  3682  		case "description":
  3683  			if v != nil {
  3684  				var description string
  3685  				err = json.Unmarshal(*v, &description)
  3686  				if err != nil {
  3687  					return err
  3688  				}
  3689  				na.Description = &description
  3690  			}
  3691  		case "bingId":
  3692  			if v != nil {
  3693  				var bingID string
  3694  				err = json.Unmarshal(*v, &bingID)
  3695  				if err != nil {
  3696  					return err
  3697  				}
  3698  				na.BingID = &bingID
  3699  			}
  3700  		case "webSearchUrl":
  3701  			if v != nil {
  3702  				var webSearchURL string
  3703  				err = json.Unmarshal(*v, &webSearchURL)
  3704  				if err != nil {
  3705  					return err
  3706  				}
  3707  				na.WebSearchURL = &webSearchURL
  3708  			}
  3709  		case "id":
  3710  			if v != nil {
  3711  				var ID string
  3712  				err = json.Unmarshal(*v, &ID)
  3713  				if err != nil {
  3714  					return err
  3715  				}
  3716  				na.ID = &ID
  3717  			}
  3718  		case "_type":
  3719  			if v != nil {
  3720  				var typeVar TypeBasicResponseBase
  3721  				err = json.Unmarshal(*v, &typeVar)
  3722  				if err != nil {
  3723  					return err
  3724  				}
  3725  				na.Type = typeVar
  3726  			}
  3727  		}
  3728  	}
  3729  
  3730  	return nil
  3731  }
  3732  
  3733  // Places defines a local entity answer.
  3734  type Places struct {
  3735  	// Value - A list of local entities, such as restaurants or hotels.
  3736  	Value *[]BasicThing `json:"value,omitempty"`
  3737  	// QueryContext - READ-ONLY
  3738  	QueryContext *QueryContext `json:"queryContext,omitempty"`
  3739  	// TotalEstimatedMatches - READ-ONLY; 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.
  3740  	TotalEstimatedMatches *int64 `json:"totalEstimatedMatches,omitempty"`
  3741  	// IsFamilyFriendly - READ-ONLY
  3742  	IsFamilyFriendly *bool `json:"isFamilyFriendly,omitempty"`
  3743  	// FollowUpQueries - READ-ONLY
  3744  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
  3745  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  3746  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  3747  	// ID - READ-ONLY; A String identifier.
  3748  	ID *string `json:"id,omitempty"`
  3749  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  3750  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  3751  }
  3752  
  3753  // MarshalJSON is the custom marshaler for Places.
  3754  func (p Places) MarshalJSON() ([]byte, error) {
  3755  	p.Type = TypePlaces
  3756  	objectMap := make(map[string]interface{})
  3757  	if p.Value != nil {
  3758  		objectMap["value"] = p.Value
  3759  	}
  3760  	if p.Type != "" {
  3761  		objectMap["_type"] = p.Type
  3762  	}
  3763  	return json.Marshal(objectMap)
  3764  }
  3765  
  3766  // AsImageObject is the BasicResponseBase implementation for Places.
  3767  func (p Places) AsImageObject() (*ImageObject, bool) {
  3768  	return nil, false
  3769  }
  3770  
  3771  // AsWebPage is the BasicResponseBase implementation for Places.
  3772  func (p Places) AsWebPage() (*WebPage, bool) {
  3773  	return nil, false
  3774  }
  3775  
  3776  // AsWebWebAnswer is the BasicResponseBase implementation for Places.
  3777  func (p Places) AsWebWebAnswer() (*WebWebAnswer, bool) {
  3778  	return nil, false
  3779  }
  3780  
  3781  // AsImages is the BasicResponseBase implementation for Places.
  3782  func (p Places) AsImages() (*Images, bool) {
  3783  	return nil, false
  3784  }
  3785  
  3786  // AsNewsArticle is the BasicResponseBase implementation for Places.
  3787  func (p Places) AsNewsArticle() (*NewsArticle, bool) {
  3788  	return nil, false
  3789  }
  3790  
  3791  // AsNews is the BasicResponseBase implementation for Places.
  3792  func (p Places) AsNews() (*News, bool) {
  3793  	return nil, false
  3794  }
  3795  
  3796  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for Places.
  3797  func (p Places) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  3798  	return nil, false
  3799  }
  3800  
  3801  // AsSpellSuggestions is the BasicResponseBase implementation for Places.
  3802  func (p Places) AsSpellSuggestions() (*SpellSuggestions, bool) {
  3803  	return nil, false
  3804  }
  3805  
  3806  // AsTimeZone is the BasicResponseBase implementation for Places.
  3807  func (p Places) AsTimeZone() (*TimeZone, bool) {
  3808  	return nil, false
  3809  }
  3810  
  3811  // AsVideoObject is the BasicResponseBase implementation for Places.
  3812  func (p Places) AsVideoObject() (*VideoObject, bool) {
  3813  	return nil, false
  3814  }
  3815  
  3816  // AsVideos is the BasicResponseBase implementation for Places.
  3817  func (p Places) AsVideos() (*Videos, bool) {
  3818  	return nil, false
  3819  }
  3820  
  3821  // AsComputation is the BasicResponseBase implementation for Places.
  3822  func (p Places) AsComputation() (*Computation, bool) {
  3823  	return nil, false
  3824  }
  3825  
  3826  // AsIdentifiable is the BasicResponseBase implementation for Places.
  3827  func (p Places) AsIdentifiable() (*Identifiable, bool) {
  3828  	return nil, false
  3829  }
  3830  
  3831  // AsBasicIdentifiable is the BasicResponseBase implementation for Places.
  3832  func (p Places) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  3833  	return &p, true
  3834  }
  3835  
  3836  // AsSearchResponse is the BasicResponseBase implementation for Places.
  3837  func (p Places) AsSearchResponse() (*SearchResponse, bool) {
  3838  	return nil, false
  3839  }
  3840  
  3841  // AsResponse is the BasicResponseBase implementation for Places.
  3842  func (p Places) AsResponse() (*Response, bool) {
  3843  	return nil, false
  3844  }
  3845  
  3846  // AsBasicResponse is the BasicResponseBase implementation for Places.
  3847  func (p Places) AsBasicResponse() (BasicResponse, bool) {
  3848  	return &p, true
  3849  }
  3850  
  3851  // AsThing is the BasicResponseBase implementation for Places.
  3852  func (p Places) AsThing() (*Thing, bool) {
  3853  	return nil, false
  3854  }
  3855  
  3856  // AsBasicThing is the BasicResponseBase implementation for Places.
  3857  func (p Places) AsBasicThing() (BasicThing, bool) {
  3858  	return nil, false
  3859  }
  3860  
  3861  // AsPlaces is the BasicResponseBase implementation for Places.
  3862  func (p Places) AsPlaces() (*Places, bool) {
  3863  	return &p, true
  3864  }
  3865  
  3866  // AsSearchResultsAnswer is the BasicResponseBase implementation for Places.
  3867  func (p Places) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  3868  	return nil, false
  3869  }
  3870  
  3871  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Places.
  3872  func (p Places) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  3873  	return &p, true
  3874  }
  3875  
  3876  // AsAnswer is the BasicResponseBase implementation for Places.
  3877  func (p Places) AsAnswer() (*Answer, bool) {
  3878  	return nil, false
  3879  }
  3880  
  3881  // AsBasicAnswer is the BasicResponseBase implementation for Places.
  3882  func (p Places) AsBasicAnswer() (BasicAnswer, bool) {
  3883  	return &p, true
  3884  }
  3885  
  3886  // AsErrorResponse is the BasicResponseBase implementation for Places.
  3887  func (p Places) AsErrorResponse() (*ErrorResponse, bool) {
  3888  	return nil, false
  3889  }
  3890  
  3891  // AsCreativeWork is the BasicResponseBase implementation for Places.
  3892  func (p Places) AsCreativeWork() (*CreativeWork, bool) {
  3893  	return nil, false
  3894  }
  3895  
  3896  // AsBasicCreativeWork is the BasicResponseBase implementation for Places.
  3897  func (p Places) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  3898  	return nil, false
  3899  }
  3900  
  3901  // AsIntangible is the BasicResponseBase implementation for Places.
  3902  func (p Places) AsIntangible() (*Intangible, bool) {
  3903  	return nil, false
  3904  }
  3905  
  3906  // AsBasicIntangible is the BasicResponseBase implementation for Places.
  3907  func (p Places) AsBasicIntangible() (BasicIntangible, bool) {
  3908  	return nil, false
  3909  }
  3910  
  3911  // AsMediaObject is the BasicResponseBase implementation for Places.
  3912  func (p Places) AsMediaObject() (*MediaObject, bool) {
  3913  	return nil, false
  3914  }
  3915  
  3916  // AsBasicMediaObject is the BasicResponseBase implementation for Places.
  3917  func (p Places) AsBasicMediaObject() (BasicMediaObject, bool) {
  3918  	return nil, false
  3919  }
  3920  
  3921  // AsArticle is the BasicResponseBase implementation for Places.
  3922  func (p Places) AsArticle() (*Article, bool) {
  3923  	return nil, false
  3924  }
  3925  
  3926  // AsBasicArticle is the BasicResponseBase implementation for Places.
  3927  func (p Places) AsBasicArticle() (BasicArticle, bool) {
  3928  	return nil, false
  3929  }
  3930  
  3931  // AsStructuredValue is the BasicResponseBase implementation for Places.
  3932  func (p Places) AsStructuredValue() (*StructuredValue, bool) {
  3933  	return nil, false
  3934  }
  3935  
  3936  // AsResponseBase is the BasicResponseBase implementation for Places.
  3937  func (p Places) AsResponseBase() (*ResponseBase, bool) {
  3938  	return nil, false
  3939  }
  3940  
  3941  // AsBasicResponseBase is the BasicResponseBase implementation for Places.
  3942  func (p Places) AsBasicResponseBase() (BasicResponseBase, bool) {
  3943  	return &p, true
  3944  }
  3945  
  3946  // UnmarshalJSON is the custom unmarshaler for Places struct.
  3947  func (p *Places) UnmarshalJSON(body []byte) error {
  3948  	var m map[string]*json.RawMessage
  3949  	err := json.Unmarshal(body, &m)
  3950  	if err != nil {
  3951  		return err
  3952  	}
  3953  	for k, v := range m {
  3954  		switch k {
  3955  		case "value":
  3956  			if v != nil {
  3957  				value, err := unmarshalBasicThingArray(*v)
  3958  				if err != nil {
  3959  					return err
  3960  				}
  3961  				p.Value = &value
  3962  			}
  3963  		case "queryContext":
  3964  			if v != nil {
  3965  				var queryContext QueryContext
  3966  				err = json.Unmarshal(*v, &queryContext)
  3967  				if err != nil {
  3968  					return err
  3969  				}
  3970  				p.QueryContext = &queryContext
  3971  			}
  3972  		case "totalEstimatedMatches":
  3973  			if v != nil {
  3974  				var totalEstimatedMatches int64
  3975  				err = json.Unmarshal(*v, &totalEstimatedMatches)
  3976  				if err != nil {
  3977  					return err
  3978  				}
  3979  				p.TotalEstimatedMatches = &totalEstimatedMatches
  3980  			}
  3981  		case "isFamilyFriendly":
  3982  			if v != nil {
  3983  				var isFamilyFriendly bool
  3984  				err = json.Unmarshal(*v, &isFamilyFriendly)
  3985  				if err != nil {
  3986  					return err
  3987  				}
  3988  				p.IsFamilyFriendly = &isFamilyFriendly
  3989  			}
  3990  		case "followUpQueries":
  3991  			if v != nil {
  3992  				var followUpQueries []Query
  3993  				err = json.Unmarshal(*v, &followUpQueries)
  3994  				if err != nil {
  3995  					return err
  3996  				}
  3997  				p.FollowUpQueries = &followUpQueries
  3998  			}
  3999  		case "webSearchUrl":
  4000  			if v != nil {
  4001  				var webSearchURL string
  4002  				err = json.Unmarshal(*v, &webSearchURL)
  4003  				if err != nil {
  4004  					return err
  4005  				}
  4006  				p.WebSearchURL = &webSearchURL
  4007  			}
  4008  		case "id":
  4009  			if v != nil {
  4010  				var ID string
  4011  				err = json.Unmarshal(*v, &ID)
  4012  				if err != nil {
  4013  					return err
  4014  				}
  4015  				p.ID = &ID
  4016  			}
  4017  		case "_type":
  4018  			if v != nil {
  4019  				var typeVar TypeBasicResponseBase
  4020  				err = json.Unmarshal(*v, &typeVar)
  4021  				if err != nil {
  4022  					return err
  4023  				}
  4024  				p.Type = typeVar
  4025  			}
  4026  		}
  4027  	}
  4028  
  4029  	return nil
  4030  }
  4031  
  4032  // Query defines a search query.
  4033  type Query struct {
  4034  	// Text - The query string. Use this string as the query term in a new search request.
  4035  	Text *string `json:"text,omitempty"`
  4036  	// DisplayText - READ-ONLY; 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
  4037  	DisplayText *string `json:"displayText,omitempty"`
  4038  	// WebSearchURL - READ-ONLY; The URL that takes the user to the Bing search results page for the query.Only related search results include this field.
  4039  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  4040  	// SearchLink - READ-ONLY
  4041  	SearchLink *string `json:"searchLink,omitempty"`
  4042  	// Thumbnail - READ-ONLY
  4043  	Thumbnail *ImageObject `json:"thumbnail,omitempty"`
  4044  }
  4045  
  4046  // MarshalJSON is the custom marshaler for Query.
  4047  func (q Query) MarshalJSON() ([]byte, error) {
  4048  	objectMap := make(map[string]interface{})
  4049  	if q.Text != nil {
  4050  		objectMap["text"] = q.Text
  4051  	}
  4052  	return json.Marshal(objectMap)
  4053  }
  4054  
  4055  // QueryContext defines the query context that Bing used for the request.
  4056  type QueryContext struct {
  4057  	// OriginalQuery - The query string as specified in the request.
  4058  	OriginalQuery *string `json:"originalQuery,omitempty"`
  4059  	// AlteredQuery - READ-ONLY; The query string used by Bing to perform the query. Bing uses the altered query string if the original query string contained spelling mistakes. For example, if the query string is "saling downwind", the altered query string will be "sailing downwind". This field is included only if the original query string contains a spelling mistake.
  4060  	AlteredQuery *string `json:"alteredQuery,omitempty"`
  4061  	// AlterationOverrideQuery - READ-ONLY; The query string to use to force Bing to use the original string. For example, if the query string is "saling downwind", the override query string will be "+saling downwind". Remember to encode the query string which results in "%2Bsaling+downwind". This field is included only if the original query string contains a spelling mistake.
  4062  	AlterationOverrideQuery *string `json:"alterationOverrideQuery,omitempty"`
  4063  	// AdultIntent - READ-ONLY; A Boolean value that indicates whether the specified query has adult intent. The value is true if the query has adult intent; otherwise, false.
  4064  	AdultIntent *bool `json:"adultIntent,omitempty"`
  4065  	// AskUserForLocation - READ-ONLY; A Boolean value that indicates whether Bing requires the user's location to provide accurate results. If you specified the user's location by using the X-MSEdge-ClientIP and X-Search-Location headers, you can ignore this field. For location aware queries, such as "today's weather" or "restaurants near me" that need the user's location to provide accurate results, this field is set to true. For location aware queries that include the location (for example, "Seattle weather"), this field is set to false. This field is also set to false for queries that are not location aware, such as "best sellers".
  4066  	AskUserForLocation *bool `json:"askUserForLocation,omitempty"`
  4067  	// IsTransactional - READ-ONLY
  4068  	IsTransactional *bool `json:"isTransactional,omitempty"`
  4069  }
  4070  
  4071  // MarshalJSON is the custom marshaler for QueryContext.
  4072  func (qc QueryContext) MarshalJSON() ([]byte, error) {
  4073  	objectMap := make(map[string]interface{})
  4074  	if qc.OriginalQuery != nil {
  4075  		objectMap["originalQuery"] = qc.OriginalQuery
  4076  	}
  4077  	return json.Marshal(objectMap)
  4078  }
  4079  
  4080  // RankingRankingGroup defines a search results group, such as mainline.
  4081  type RankingRankingGroup struct {
  4082  	// Items - A list of search result items to display in the group.
  4083  	Items *[]RankingRankingItem `json:"items,omitempty"`
  4084  }
  4085  
  4086  // RankingRankingItem defines a search result item to display
  4087  type RankingRankingItem struct {
  4088  	// AnswerType - The answer that contains the item to display. Use the type to find the answer in the SearchResponse object. The type is the name of a SearchResponse field. Possible values include: 'AnswerTypeWebPages', 'AnswerTypeImages', 'AnswerTypeSpellSuggestions', 'AnswerTypeNews', 'AnswerTypeRelatedSearches', 'AnswerTypeVideos', 'AnswerTypeComputation', 'AnswerTypeTimeZone'
  4089  	AnswerType AnswerType `json:"answerType,omitempty"`
  4090  	// ResultIndex - READ-ONLY; A zero-based index of the item in the answer.If the item does not include this field, display all items in the answer. For example, display all news articles in the News answer.
  4091  	ResultIndex *int32 `json:"resultIndex,omitempty"`
  4092  	// Value - READ-ONLY; The ID that identifies either an answer to display or an item of an answer to display. If the ID identifies an answer, display all items of the answer.
  4093  	Value BasicIdentifiable `json:"value,omitempty"`
  4094  	// HTMLIndex - READ-ONLY
  4095  	HTMLIndex *int32 `json:"htmlIndex,omitempty"`
  4096  	// TextualIndex - READ-ONLY
  4097  	TextualIndex *int32 `json:"textualIndex,omitempty"`
  4098  	// ScreenshotIndex - READ-ONLY
  4099  	ScreenshotIndex *int32 `json:"screenshotIndex,omitempty"`
  4100  }
  4101  
  4102  // MarshalJSON is the custom marshaler for RankingRankingItem.
  4103  func (rri RankingRankingItem) MarshalJSON() ([]byte, error) {
  4104  	objectMap := make(map[string]interface{})
  4105  	if rri.AnswerType != "" {
  4106  		objectMap["answerType"] = rri.AnswerType
  4107  	}
  4108  	return json.Marshal(objectMap)
  4109  }
  4110  
  4111  // UnmarshalJSON is the custom unmarshaler for RankingRankingItem struct.
  4112  func (rri *RankingRankingItem) UnmarshalJSON(body []byte) error {
  4113  	var m map[string]*json.RawMessage
  4114  	err := json.Unmarshal(body, &m)
  4115  	if err != nil {
  4116  		return err
  4117  	}
  4118  	for k, v := range m {
  4119  		switch k {
  4120  		case "answerType":
  4121  			if v != nil {
  4122  				var answerType AnswerType
  4123  				err = json.Unmarshal(*v, &answerType)
  4124  				if err != nil {
  4125  					return err
  4126  				}
  4127  				rri.AnswerType = answerType
  4128  			}
  4129  		case "resultIndex":
  4130  			if v != nil {
  4131  				var resultIndex int32
  4132  				err = json.Unmarshal(*v, &resultIndex)
  4133  				if err != nil {
  4134  					return err
  4135  				}
  4136  				rri.ResultIndex = &resultIndex
  4137  			}
  4138  		case "value":
  4139  			if v != nil {
  4140  				value, err := unmarshalBasicIdentifiable(*v)
  4141  				if err != nil {
  4142  					return err
  4143  				}
  4144  				rri.Value = value
  4145  			}
  4146  		case "htmlIndex":
  4147  			if v != nil {
  4148  				var HTMLIndex int32
  4149  				err = json.Unmarshal(*v, &HTMLIndex)
  4150  				if err != nil {
  4151  					return err
  4152  				}
  4153  				rri.HTMLIndex = &HTMLIndex
  4154  			}
  4155  		case "textualIndex":
  4156  			if v != nil {
  4157  				var textualIndex int32
  4158  				err = json.Unmarshal(*v, &textualIndex)
  4159  				if err != nil {
  4160  					return err
  4161  				}
  4162  				rri.TextualIndex = &textualIndex
  4163  			}
  4164  		case "screenshotIndex":
  4165  			if v != nil {
  4166  				var screenshotIndex int32
  4167  				err = json.Unmarshal(*v, &screenshotIndex)
  4168  				if err != nil {
  4169  					return err
  4170  				}
  4171  				rri.ScreenshotIndex = &screenshotIndex
  4172  			}
  4173  		}
  4174  	}
  4175  
  4176  	return nil
  4177  }
  4178  
  4179  // RankingRankingResponse defines where on the search results page content should be placed and in what
  4180  // order.
  4181  type RankingRankingResponse struct {
  4182  	// Pole - READ-ONLY; The search results that should be afforded the most visible treatment (for example, displayed above the mainline and sidebar).
  4183  	Pole *RankingRankingGroup `json:"pole,omitempty"`
  4184  	// Mainline - READ-ONLY; The search results to display in the mainline.
  4185  	Mainline *RankingRankingGroup `json:"mainline,omitempty"`
  4186  	// Sidebar - READ-ONLY; The search results to display in the sidebar.
  4187  	Sidebar *RankingRankingGroup `json:"sidebar,omitempty"`
  4188  }
  4189  
  4190  // MarshalJSON is the custom marshaler for RankingRankingResponse.
  4191  func (rrr RankingRankingResponse) MarshalJSON() ([]byte, error) {
  4192  	objectMap := make(map[string]interface{})
  4193  	return json.Marshal(objectMap)
  4194  }
  4195  
  4196  // RelatedSearchesRelatedSearchAnswer defines a list of related queries made by others.
  4197  type RelatedSearchesRelatedSearchAnswer struct {
  4198  	// Value - A list of related queries that were made by others.
  4199  	Value *[]Query `json:"value,omitempty"`
  4200  	// QueryContext - READ-ONLY
  4201  	QueryContext *QueryContext `json:"queryContext,omitempty"`
  4202  	// TotalEstimatedMatches - READ-ONLY; 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.
  4203  	TotalEstimatedMatches *int64 `json:"totalEstimatedMatches,omitempty"`
  4204  	// IsFamilyFriendly - READ-ONLY
  4205  	IsFamilyFriendly *bool `json:"isFamilyFriendly,omitempty"`
  4206  	// FollowUpQueries - READ-ONLY
  4207  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
  4208  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  4209  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  4210  	// ID - READ-ONLY; A String identifier.
  4211  	ID *string `json:"id,omitempty"`
  4212  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  4213  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  4214  }
  4215  
  4216  // MarshalJSON is the custom marshaler for RelatedSearchesRelatedSearchAnswer.
  4217  func (rsrsa RelatedSearchesRelatedSearchAnswer) MarshalJSON() ([]byte, error) {
  4218  	rsrsa.Type = TypeRelatedSearchesRelatedSearchAnswer
  4219  	objectMap := make(map[string]interface{})
  4220  	if rsrsa.Value != nil {
  4221  		objectMap["value"] = rsrsa.Value
  4222  	}
  4223  	if rsrsa.Type != "" {
  4224  		objectMap["_type"] = rsrsa.Type
  4225  	}
  4226  	return json.Marshal(objectMap)
  4227  }
  4228  
  4229  // AsImageObject is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4230  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsImageObject() (*ImageObject, bool) {
  4231  	return nil, false
  4232  }
  4233  
  4234  // AsWebPage is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4235  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsWebPage() (*WebPage, bool) {
  4236  	return nil, false
  4237  }
  4238  
  4239  // AsWebWebAnswer is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4240  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsWebWebAnswer() (*WebWebAnswer, bool) {
  4241  	return nil, false
  4242  }
  4243  
  4244  // AsImages is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4245  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsImages() (*Images, bool) {
  4246  	return nil, false
  4247  }
  4248  
  4249  // AsNewsArticle is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4250  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsNewsArticle() (*NewsArticle, bool) {
  4251  	return nil, false
  4252  }
  4253  
  4254  // AsNews is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4255  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsNews() (*News, bool) {
  4256  	return nil, false
  4257  }
  4258  
  4259  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4260  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  4261  	return &rsrsa, true
  4262  }
  4263  
  4264  // AsSpellSuggestions is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4265  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsSpellSuggestions() (*SpellSuggestions, bool) {
  4266  	return nil, false
  4267  }
  4268  
  4269  // AsTimeZone is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4270  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsTimeZone() (*TimeZone, bool) {
  4271  	return nil, false
  4272  }
  4273  
  4274  // AsVideoObject is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4275  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsVideoObject() (*VideoObject, bool) {
  4276  	return nil, false
  4277  }
  4278  
  4279  // AsVideos is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4280  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsVideos() (*Videos, bool) {
  4281  	return nil, false
  4282  }
  4283  
  4284  // AsComputation is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4285  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsComputation() (*Computation, bool) {
  4286  	return nil, false
  4287  }
  4288  
  4289  // AsIdentifiable is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4290  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsIdentifiable() (*Identifiable, bool) {
  4291  	return nil, false
  4292  }
  4293  
  4294  // AsBasicIdentifiable is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4295  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  4296  	return &rsrsa, true
  4297  }
  4298  
  4299  // AsSearchResponse is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4300  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsSearchResponse() (*SearchResponse, bool) {
  4301  	return nil, false
  4302  }
  4303  
  4304  // AsResponse is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4305  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsResponse() (*Response, bool) {
  4306  	return nil, false
  4307  }
  4308  
  4309  // AsBasicResponse is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4310  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsBasicResponse() (BasicResponse, bool) {
  4311  	return &rsrsa, true
  4312  }
  4313  
  4314  // AsThing is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4315  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsThing() (*Thing, bool) {
  4316  	return nil, false
  4317  }
  4318  
  4319  // AsBasicThing is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4320  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsBasicThing() (BasicThing, bool) {
  4321  	return nil, false
  4322  }
  4323  
  4324  // AsPlaces is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4325  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsPlaces() (*Places, bool) {
  4326  	return nil, false
  4327  }
  4328  
  4329  // AsSearchResultsAnswer is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4330  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  4331  	return nil, false
  4332  }
  4333  
  4334  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4335  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  4336  	return &rsrsa, true
  4337  }
  4338  
  4339  // AsAnswer is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4340  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsAnswer() (*Answer, bool) {
  4341  	return nil, false
  4342  }
  4343  
  4344  // AsBasicAnswer is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4345  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsBasicAnswer() (BasicAnswer, bool) {
  4346  	return &rsrsa, true
  4347  }
  4348  
  4349  // AsErrorResponse is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4350  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsErrorResponse() (*ErrorResponse, bool) {
  4351  	return nil, false
  4352  }
  4353  
  4354  // AsCreativeWork is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4355  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsCreativeWork() (*CreativeWork, bool) {
  4356  	return nil, false
  4357  }
  4358  
  4359  // AsBasicCreativeWork is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4360  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  4361  	return nil, false
  4362  }
  4363  
  4364  // AsIntangible is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4365  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsIntangible() (*Intangible, bool) {
  4366  	return nil, false
  4367  }
  4368  
  4369  // AsBasicIntangible is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4370  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsBasicIntangible() (BasicIntangible, bool) {
  4371  	return nil, false
  4372  }
  4373  
  4374  // AsMediaObject is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4375  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsMediaObject() (*MediaObject, bool) {
  4376  	return nil, false
  4377  }
  4378  
  4379  // AsBasicMediaObject is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4380  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsBasicMediaObject() (BasicMediaObject, bool) {
  4381  	return nil, false
  4382  }
  4383  
  4384  // AsArticle is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4385  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsArticle() (*Article, bool) {
  4386  	return nil, false
  4387  }
  4388  
  4389  // AsBasicArticle is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4390  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsBasicArticle() (BasicArticle, bool) {
  4391  	return nil, false
  4392  }
  4393  
  4394  // AsStructuredValue is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4395  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsStructuredValue() (*StructuredValue, bool) {
  4396  	return nil, false
  4397  }
  4398  
  4399  // AsResponseBase is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4400  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsResponseBase() (*ResponseBase, bool) {
  4401  	return nil, false
  4402  }
  4403  
  4404  // AsBasicResponseBase is the BasicResponseBase implementation for RelatedSearchesRelatedSearchAnswer.
  4405  func (rsrsa RelatedSearchesRelatedSearchAnswer) AsBasicResponseBase() (BasicResponseBase, bool) {
  4406  	return &rsrsa, true
  4407  }
  4408  
  4409  // BasicResponse defines a response. All schemas that could be returned at the root of a response should inherit from
  4410  // this
  4411  type BasicResponse interface {
  4412  	AsImageObject() (*ImageObject, bool)
  4413  	AsWebPage() (*WebPage, bool)
  4414  	AsWebWebAnswer() (*WebWebAnswer, bool)
  4415  	AsImages() (*Images, bool)
  4416  	AsNewsArticle() (*NewsArticle, bool)
  4417  	AsNews() (*News, bool)
  4418  	AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool)
  4419  	AsSpellSuggestions() (*SpellSuggestions, bool)
  4420  	AsTimeZone() (*TimeZone, bool)
  4421  	AsVideoObject() (*VideoObject, bool)
  4422  	AsVideos() (*Videos, bool)
  4423  	AsComputation() (*Computation, bool)
  4424  	AsSearchResponse() (*SearchResponse, bool)
  4425  	AsThing() (*Thing, bool)
  4426  	AsBasicThing() (BasicThing, bool)
  4427  	AsPlaces() (*Places, bool)
  4428  	AsSearchResultsAnswer() (*SearchResultsAnswer, bool)
  4429  	AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool)
  4430  	AsAnswer() (*Answer, bool)
  4431  	AsBasicAnswer() (BasicAnswer, bool)
  4432  	AsErrorResponse() (*ErrorResponse, bool)
  4433  	AsCreativeWork() (*CreativeWork, bool)
  4434  	AsBasicCreativeWork() (BasicCreativeWork, bool)
  4435  	AsIntangible() (*Intangible, bool)
  4436  	AsBasicIntangible() (BasicIntangible, bool)
  4437  	AsMediaObject() (*MediaObject, bool)
  4438  	AsBasicMediaObject() (BasicMediaObject, bool)
  4439  	AsArticle() (*Article, bool)
  4440  	AsBasicArticle() (BasicArticle, bool)
  4441  	AsStructuredValue() (*StructuredValue, bool)
  4442  	AsResponse() (*Response, bool)
  4443  }
  4444  
  4445  // Response defines a response. All schemas that could be returned at the root of a response should inherit
  4446  // from this
  4447  type Response struct {
  4448  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  4449  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  4450  	// ID - READ-ONLY; A String identifier.
  4451  	ID *string `json:"id,omitempty"`
  4452  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  4453  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  4454  }
  4455  
  4456  func unmarshalBasicResponse(body []byte) (BasicResponse, error) {
  4457  	var m map[string]interface{}
  4458  	err := json.Unmarshal(body, &m)
  4459  	if err != nil {
  4460  		return nil, err
  4461  	}
  4462  
  4463  	switch m["_type"] {
  4464  	case string(TypeImageObject):
  4465  		var ioVar ImageObject
  4466  		err := json.Unmarshal(body, &ioVar)
  4467  		return ioVar, err
  4468  	case string(TypeWebPage):
  4469  		var wp WebPage
  4470  		err := json.Unmarshal(body, &wp)
  4471  		return wp, err
  4472  	case string(TypeWebWebAnswer):
  4473  		var wwa WebWebAnswer
  4474  		err := json.Unmarshal(body, &wwa)
  4475  		return wwa, err
  4476  	case string(TypeImages):
  4477  		var i Images
  4478  		err := json.Unmarshal(body, &i)
  4479  		return i, err
  4480  	case string(TypeNewsArticle):
  4481  		var na NewsArticle
  4482  		err := json.Unmarshal(body, &na)
  4483  		return na, err
  4484  	case string(TypeNews):
  4485  		var n News
  4486  		err := json.Unmarshal(body, &n)
  4487  		return n, err
  4488  	case string(TypeRelatedSearchesRelatedSearchAnswer):
  4489  		var rsrsa RelatedSearchesRelatedSearchAnswer
  4490  		err := json.Unmarshal(body, &rsrsa)
  4491  		return rsrsa, err
  4492  	case string(TypeSpellSuggestions):
  4493  		var ss SpellSuggestions
  4494  		err := json.Unmarshal(body, &ss)
  4495  		return ss, err
  4496  	case string(TypeTimeZone):
  4497  		var tz TimeZone
  4498  		err := json.Unmarshal(body, &tz)
  4499  		return tz, err
  4500  	case string(TypeVideoObject):
  4501  		var vo VideoObject
  4502  		err := json.Unmarshal(body, &vo)
  4503  		return vo, err
  4504  	case string(TypeVideos):
  4505  		var vVar Videos
  4506  		err := json.Unmarshal(body, &vVar)
  4507  		return vVar, err
  4508  	case string(TypeComputation):
  4509  		var c Computation
  4510  		err := json.Unmarshal(body, &c)
  4511  		return c, err
  4512  	case string(TypeSearchResponse):
  4513  		var sr SearchResponse
  4514  		err := json.Unmarshal(body, &sr)
  4515  		return sr, err
  4516  	case string(TypeThing):
  4517  		var t Thing
  4518  		err := json.Unmarshal(body, &t)
  4519  		return t, err
  4520  	case string(TypePlaces):
  4521  		var p Places
  4522  		err := json.Unmarshal(body, &p)
  4523  		return p, err
  4524  	case string(TypeSearchResultsAnswer):
  4525  		var sra SearchResultsAnswer
  4526  		err := json.Unmarshal(body, &sra)
  4527  		return sra, err
  4528  	case string(TypeAnswer):
  4529  		var a Answer
  4530  		err := json.Unmarshal(body, &a)
  4531  		return a, err
  4532  	case string(TypeErrorResponse):
  4533  		var er ErrorResponse
  4534  		err := json.Unmarshal(body, &er)
  4535  		return er, err
  4536  	case string(TypeCreativeWork):
  4537  		var cw CreativeWork
  4538  		err := json.Unmarshal(body, &cw)
  4539  		return cw, err
  4540  	case string(TypeIntangible):
  4541  		var i Intangible
  4542  		err := json.Unmarshal(body, &i)
  4543  		return i, err
  4544  	case string(TypeMediaObject):
  4545  		var mo MediaObject
  4546  		err := json.Unmarshal(body, &mo)
  4547  		return mo, err
  4548  	case string(TypeArticle):
  4549  		var a Article
  4550  		err := json.Unmarshal(body, &a)
  4551  		return a, err
  4552  	case string(TypeStructuredValue):
  4553  		var sv StructuredValue
  4554  		err := json.Unmarshal(body, &sv)
  4555  		return sv, err
  4556  	default:
  4557  		var r Response
  4558  		err := json.Unmarshal(body, &r)
  4559  		return r, err
  4560  	}
  4561  }
  4562  func unmarshalBasicResponseArray(body []byte) ([]BasicResponse, error) {
  4563  	var rawMessages []*json.RawMessage
  4564  	err := json.Unmarshal(body, &rawMessages)
  4565  	if err != nil {
  4566  		return nil, err
  4567  	}
  4568  
  4569  	rArray := make([]BasicResponse, len(rawMessages))
  4570  
  4571  	for index, rawMessage := range rawMessages {
  4572  		r, err := unmarshalBasicResponse(*rawMessage)
  4573  		if err != nil {
  4574  			return nil, err
  4575  		}
  4576  		rArray[index] = r
  4577  	}
  4578  	return rArray, nil
  4579  }
  4580  
  4581  // MarshalJSON is the custom marshaler for Response.
  4582  func (r Response) MarshalJSON() ([]byte, error) {
  4583  	r.Type = TypeResponse
  4584  	objectMap := make(map[string]interface{})
  4585  	if r.Type != "" {
  4586  		objectMap["_type"] = r.Type
  4587  	}
  4588  	return json.Marshal(objectMap)
  4589  }
  4590  
  4591  // AsImageObject is the BasicResponseBase implementation for Response.
  4592  func (r Response) AsImageObject() (*ImageObject, bool) {
  4593  	return nil, false
  4594  }
  4595  
  4596  // AsWebPage is the BasicResponseBase implementation for Response.
  4597  func (r Response) AsWebPage() (*WebPage, bool) {
  4598  	return nil, false
  4599  }
  4600  
  4601  // AsWebWebAnswer is the BasicResponseBase implementation for Response.
  4602  func (r Response) AsWebWebAnswer() (*WebWebAnswer, bool) {
  4603  	return nil, false
  4604  }
  4605  
  4606  // AsImages is the BasicResponseBase implementation for Response.
  4607  func (r Response) AsImages() (*Images, bool) {
  4608  	return nil, false
  4609  }
  4610  
  4611  // AsNewsArticle is the BasicResponseBase implementation for Response.
  4612  func (r Response) AsNewsArticle() (*NewsArticle, bool) {
  4613  	return nil, false
  4614  }
  4615  
  4616  // AsNews is the BasicResponseBase implementation for Response.
  4617  func (r Response) AsNews() (*News, bool) {
  4618  	return nil, false
  4619  }
  4620  
  4621  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for Response.
  4622  func (r Response) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  4623  	return nil, false
  4624  }
  4625  
  4626  // AsSpellSuggestions is the BasicResponseBase implementation for Response.
  4627  func (r Response) AsSpellSuggestions() (*SpellSuggestions, bool) {
  4628  	return nil, false
  4629  }
  4630  
  4631  // AsTimeZone is the BasicResponseBase implementation for Response.
  4632  func (r Response) AsTimeZone() (*TimeZone, bool) {
  4633  	return nil, false
  4634  }
  4635  
  4636  // AsVideoObject is the BasicResponseBase implementation for Response.
  4637  func (r Response) AsVideoObject() (*VideoObject, bool) {
  4638  	return nil, false
  4639  }
  4640  
  4641  // AsVideos is the BasicResponseBase implementation for Response.
  4642  func (r Response) AsVideos() (*Videos, bool) {
  4643  	return nil, false
  4644  }
  4645  
  4646  // AsComputation is the BasicResponseBase implementation for Response.
  4647  func (r Response) AsComputation() (*Computation, bool) {
  4648  	return nil, false
  4649  }
  4650  
  4651  // AsIdentifiable is the BasicResponseBase implementation for Response.
  4652  func (r Response) AsIdentifiable() (*Identifiable, bool) {
  4653  	return nil, false
  4654  }
  4655  
  4656  // AsBasicIdentifiable is the BasicResponseBase implementation for Response.
  4657  func (r Response) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  4658  	return &r, true
  4659  }
  4660  
  4661  // AsSearchResponse is the BasicResponseBase implementation for Response.
  4662  func (r Response) AsSearchResponse() (*SearchResponse, bool) {
  4663  	return nil, false
  4664  }
  4665  
  4666  // AsResponse is the BasicResponseBase implementation for Response.
  4667  func (r Response) AsResponse() (*Response, bool) {
  4668  	return &r, true
  4669  }
  4670  
  4671  // AsBasicResponse is the BasicResponseBase implementation for Response.
  4672  func (r Response) AsBasicResponse() (BasicResponse, bool) {
  4673  	return &r, true
  4674  }
  4675  
  4676  // AsThing is the BasicResponseBase implementation for Response.
  4677  func (r Response) AsThing() (*Thing, bool) {
  4678  	return nil, false
  4679  }
  4680  
  4681  // AsBasicThing is the BasicResponseBase implementation for Response.
  4682  func (r Response) AsBasicThing() (BasicThing, bool) {
  4683  	return nil, false
  4684  }
  4685  
  4686  // AsPlaces is the BasicResponseBase implementation for Response.
  4687  func (r Response) AsPlaces() (*Places, bool) {
  4688  	return nil, false
  4689  }
  4690  
  4691  // AsSearchResultsAnswer is the BasicResponseBase implementation for Response.
  4692  func (r Response) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  4693  	return nil, false
  4694  }
  4695  
  4696  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Response.
  4697  func (r Response) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  4698  	return nil, false
  4699  }
  4700  
  4701  // AsAnswer is the BasicResponseBase implementation for Response.
  4702  func (r Response) AsAnswer() (*Answer, bool) {
  4703  	return nil, false
  4704  }
  4705  
  4706  // AsBasicAnswer is the BasicResponseBase implementation for Response.
  4707  func (r Response) AsBasicAnswer() (BasicAnswer, bool) {
  4708  	return nil, false
  4709  }
  4710  
  4711  // AsErrorResponse is the BasicResponseBase implementation for Response.
  4712  func (r Response) AsErrorResponse() (*ErrorResponse, bool) {
  4713  	return nil, false
  4714  }
  4715  
  4716  // AsCreativeWork is the BasicResponseBase implementation for Response.
  4717  func (r Response) AsCreativeWork() (*CreativeWork, bool) {
  4718  	return nil, false
  4719  }
  4720  
  4721  // AsBasicCreativeWork is the BasicResponseBase implementation for Response.
  4722  func (r Response) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  4723  	return nil, false
  4724  }
  4725  
  4726  // AsIntangible is the BasicResponseBase implementation for Response.
  4727  func (r Response) AsIntangible() (*Intangible, bool) {
  4728  	return nil, false
  4729  }
  4730  
  4731  // AsBasicIntangible is the BasicResponseBase implementation for Response.
  4732  func (r Response) AsBasicIntangible() (BasicIntangible, bool) {
  4733  	return nil, false
  4734  }
  4735  
  4736  // AsMediaObject is the BasicResponseBase implementation for Response.
  4737  func (r Response) AsMediaObject() (*MediaObject, bool) {
  4738  	return nil, false
  4739  }
  4740  
  4741  // AsBasicMediaObject is the BasicResponseBase implementation for Response.
  4742  func (r Response) AsBasicMediaObject() (BasicMediaObject, bool) {
  4743  	return nil, false
  4744  }
  4745  
  4746  // AsArticle is the BasicResponseBase implementation for Response.
  4747  func (r Response) AsArticle() (*Article, bool) {
  4748  	return nil, false
  4749  }
  4750  
  4751  // AsBasicArticle is the BasicResponseBase implementation for Response.
  4752  func (r Response) AsBasicArticle() (BasicArticle, bool) {
  4753  	return nil, false
  4754  }
  4755  
  4756  // AsStructuredValue is the BasicResponseBase implementation for Response.
  4757  func (r Response) AsStructuredValue() (*StructuredValue, bool) {
  4758  	return nil, false
  4759  }
  4760  
  4761  // AsResponseBase is the BasicResponseBase implementation for Response.
  4762  func (r Response) AsResponseBase() (*ResponseBase, bool) {
  4763  	return nil, false
  4764  }
  4765  
  4766  // AsBasicResponseBase is the BasicResponseBase implementation for Response.
  4767  func (r Response) AsBasicResponseBase() (BasicResponseBase, bool) {
  4768  	return &r, true
  4769  }
  4770  
  4771  // BasicResponseBase ...
  4772  type BasicResponseBase interface {
  4773  	AsImageObject() (*ImageObject, bool)
  4774  	AsWebPage() (*WebPage, bool)
  4775  	AsWebWebAnswer() (*WebWebAnswer, bool)
  4776  	AsImages() (*Images, bool)
  4777  	AsNewsArticle() (*NewsArticle, bool)
  4778  	AsNews() (*News, bool)
  4779  	AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool)
  4780  	AsSpellSuggestions() (*SpellSuggestions, bool)
  4781  	AsTimeZone() (*TimeZone, bool)
  4782  	AsVideoObject() (*VideoObject, bool)
  4783  	AsVideos() (*Videos, bool)
  4784  	AsComputation() (*Computation, bool)
  4785  	AsIdentifiable() (*Identifiable, bool)
  4786  	AsBasicIdentifiable() (BasicIdentifiable, bool)
  4787  	AsSearchResponse() (*SearchResponse, bool)
  4788  	AsResponse() (*Response, bool)
  4789  	AsBasicResponse() (BasicResponse, bool)
  4790  	AsThing() (*Thing, bool)
  4791  	AsBasicThing() (BasicThing, bool)
  4792  	AsPlaces() (*Places, bool)
  4793  	AsSearchResultsAnswer() (*SearchResultsAnswer, bool)
  4794  	AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool)
  4795  	AsAnswer() (*Answer, bool)
  4796  	AsBasicAnswer() (BasicAnswer, bool)
  4797  	AsErrorResponse() (*ErrorResponse, bool)
  4798  	AsCreativeWork() (*CreativeWork, bool)
  4799  	AsBasicCreativeWork() (BasicCreativeWork, bool)
  4800  	AsIntangible() (*Intangible, bool)
  4801  	AsBasicIntangible() (BasicIntangible, bool)
  4802  	AsMediaObject() (*MediaObject, bool)
  4803  	AsBasicMediaObject() (BasicMediaObject, bool)
  4804  	AsArticle() (*Article, bool)
  4805  	AsBasicArticle() (BasicArticle, bool)
  4806  	AsStructuredValue() (*StructuredValue, bool)
  4807  	AsResponseBase() (*ResponseBase, bool)
  4808  }
  4809  
  4810  // ResponseBase ...
  4811  type ResponseBase struct {
  4812  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  4813  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  4814  }
  4815  
  4816  func unmarshalBasicResponseBase(body []byte) (BasicResponseBase, error) {
  4817  	var m map[string]interface{}
  4818  	err := json.Unmarshal(body, &m)
  4819  	if err != nil {
  4820  		return nil, err
  4821  	}
  4822  
  4823  	switch m["_type"] {
  4824  	case string(TypeImageObject):
  4825  		var ioVar ImageObject
  4826  		err := json.Unmarshal(body, &ioVar)
  4827  		return ioVar, err
  4828  	case string(TypeWebPage):
  4829  		var wp WebPage
  4830  		err := json.Unmarshal(body, &wp)
  4831  		return wp, err
  4832  	case string(TypeWebWebAnswer):
  4833  		var wwa WebWebAnswer
  4834  		err := json.Unmarshal(body, &wwa)
  4835  		return wwa, err
  4836  	case string(TypeImages):
  4837  		var i Images
  4838  		err := json.Unmarshal(body, &i)
  4839  		return i, err
  4840  	case string(TypeNewsArticle):
  4841  		var na NewsArticle
  4842  		err := json.Unmarshal(body, &na)
  4843  		return na, err
  4844  	case string(TypeNews):
  4845  		var n News
  4846  		err := json.Unmarshal(body, &n)
  4847  		return n, err
  4848  	case string(TypeRelatedSearchesRelatedSearchAnswer):
  4849  		var rsrsa RelatedSearchesRelatedSearchAnswer
  4850  		err := json.Unmarshal(body, &rsrsa)
  4851  		return rsrsa, err
  4852  	case string(TypeSpellSuggestions):
  4853  		var ss SpellSuggestions
  4854  		err := json.Unmarshal(body, &ss)
  4855  		return ss, err
  4856  	case string(TypeTimeZone):
  4857  		var tz TimeZone
  4858  		err := json.Unmarshal(body, &tz)
  4859  		return tz, err
  4860  	case string(TypeVideoObject):
  4861  		var vo VideoObject
  4862  		err := json.Unmarshal(body, &vo)
  4863  		return vo, err
  4864  	case string(TypeVideos):
  4865  		var vVar Videos
  4866  		err := json.Unmarshal(body, &vVar)
  4867  		return vVar, err
  4868  	case string(TypeComputation):
  4869  		var c Computation
  4870  		err := json.Unmarshal(body, &c)
  4871  		return c, err
  4872  	case string(TypeIdentifiable):
  4873  		var i Identifiable
  4874  		err := json.Unmarshal(body, &i)
  4875  		return i, err
  4876  	case string(TypeSearchResponse):
  4877  		var sr SearchResponse
  4878  		err := json.Unmarshal(body, &sr)
  4879  		return sr, err
  4880  	case string(TypeResponse):
  4881  		var r Response
  4882  		err := json.Unmarshal(body, &r)
  4883  		return r, err
  4884  	case string(TypeThing):
  4885  		var t Thing
  4886  		err := json.Unmarshal(body, &t)
  4887  		return t, err
  4888  	case string(TypePlaces):
  4889  		var p Places
  4890  		err := json.Unmarshal(body, &p)
  4891  		return p, err
  4892  	case string(TypeSearchResultsAnswer):
  4893  		var sra SearchResultsAnswer
  4894  		err := json.Unmarshal(body, &sra)
  4895  		return sra, err
  4896  	case string(TypeAnswer):
  4897  		var a Answer
  4898  		err := json.Unmarshal(body, &a)
  4899  		return a, err
  4900  	case string(TypeErrorResponse):
  4901  		var er ErrorResponse
  4902  		err := json.Unmarshal(body, &er)
  4903  		return er, err
  4904  	case string(TypeCreativeWork):
  4905  		var cw CreativeWork
  4906  		err := json.Unmarshal(body, &cw)
  4907  		return cw, err
  4908  	case string(TypeIntangible):
  4909  		var i Intangible
  4910  		err := json.Unmarshal(body, &i)
  4911  		return i, err
  4912  	case string(TypeMediaObject):
  4913  		var mo MediaObject
  4914  		err := json.Unmarshal(body, &mo)
  4915  		return mo, err
  4916  	case string(TypeArticle):
  4917  		var a Article
  4918  		err := json.Unmarshal(body, &a)
  4919  		return a, err
  4920  	case string(TypeStructuredValue):
  4921  		var sv StructuredValue
  4922  		err := json.Unmarshal(body, &sv)
  4923  		return sv, err
  4924  	default:
  4925  		var rb ResponseBase
  4926  		err := json.Unmarshal(body, &rb)
  4927  		return rb, err
  4928  	}
  4929  }
  4930  func unmarshalBasicResponseBaseArray(body []byte) ([]BasicResponseBase, error) {
  4931  	var rawMessages []*json.RawMessage
  4932  	err := json.Unmarshal(body, &rawMessages)
  4933  	if err != nil {
  4934  		return nil, err
  4935  	}
  4936  
  4937  	rbArray := make([]BasicResponseBase, len(rawMessages))
  4938  
  4939  	for index, rawMessage := range rawMessages {
  4940  		rb, err := unmarshalBasicResponseBase(*rawMessage)
  4941  		if err != nil {
  4942  			return nil, err
  4943  		}
  4944  		rbArray[index] = rb
  4945  	}
  4946  	return rbArray, nil
  4947  }
  4948  
  4949  // MarshalJSON is the custom marshaler for ResponseBase.
  4950  func (rb ResponseBase) MarshalJSON() ([]byte, error) {
  4951  	rb.Type = TypeResponseBase
  4952  	objectMap := make(map[string]interface{})
  4953  	if rb.Type != "" {
  4954  		objectMap["_type"] = rb.Type
  4955  	}
  4956  	return json.Marshal(objectMap)
  4957  }
  4958  
  4959  // AsImageObject is the BasicResponseBase implementation for ResponseBase.
  4960  func (rb ResponseBase) AsImageObject() (*ImageObject, bool) {
  4961  	return nil, false
  4962  }
  4963  
  4964  // AsWebPage is the BasicResponseBase implementation for ResponseBase.
  4965  func (rb ResponseBase) AsWebPage() (*WebPage, bool) {
  4966  	return nil, false
  4967  }
  4968  
  4969  // AsWebWebAnswer is the BasicResponseBase implementation for ResponseBase.
  4970  func (rb ResponseBase) AsWebWebAnswer() (*WebWebAnswer, bool) {
  4971  	return nil, false
  4972  }
  4973  
  4974  // AsImages is the BasicResponseBase implementation for ResponseBase.
  4975  func (rb ResponseBase) AsImages() (*Images, bool) {
  4976  	return nil, false
  4977  }
  4978  
  4979  // AsNewsArticle is the BasicResponseBase implementation for ResponseBase.
  4980  func (rb ResponseBase) AsNewsArticle() (*NewsArticle, bool) {
  4981  	return nil, false
  4982  }
  4983  
  4984  // AsNews is the BasicResponseBase implementation for ResponseBase.
  4985  func (rb ResponseBase) AsNews() (*News, bool) {
  4986  	return nil, false
  4987  }
  4988  
  4989  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for ResponseBase.
  4990  func (rb ResponseBase) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  4991  	return nil, false
  4992  }
  4993  
  4994  // AsSpellSuggestions is the BasicResponseBase implementation for ResponseBase.
  4995  func (rb ResponseBase) AsSpellSuggestions() (*SpellSuggestions, bool) {
  4996  	return nil, false
  4997  }
  4998  
  4999  // AsTimeZone is the BasicResponseBase implementation for ResponseBase.
  5000  func (rb ResponseBase) AsTimeZone() (*TimeZone, bool) {
  5001  	return nil, false
  5002  }
  5003  
  5004  // AsVideoObject is the BasicResponseBase implementation for ResponseBase.
  5005  func (rb ResponseBase) AsVideoObject() (*VideoObject, bool) {
  5006  	return nil, false
  5007  }
  5008  
  5009  // AsVideos is the BasicResponseBase implementation for ResponseBase.
  5010  func (rb ResponseBase) AsVideos() (*Videos, bool) {
  5011  	return nil, false
  5012  }
  5013  
  5014  // AsComputation is the BasicResponseBase implementation for ResponseBase.
  5015  func (rb ResponseBase) AsComputation() (*Computation, bool) {
  5016  	return nil, false
  5017  }
  5018  
  5019  // AsIdentifiable is the BasicResponseBase implementation for ResponseBase.
  5020  func (rb ResponseBase) AsIdentifiable() (*Identifiable, bool) {
  5021  	return nil, false
  5022  }
  5023  
  5024  // AsBasicIdentifiable is the BasicResponseBase implementation for ResponseBase.
  5025  func (rb ResponseBase) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  5026  	return nil, false
  5027  }
  5028  
  5029  // AsSearchResponse is the BasicResponseBase implementation for ResponseBase.
  5030  func (rb ResponseBase) AsSearchResponse() (*SearchResponse, bool) {
  5031  	return nil, false
  5032  }
  5033  
  5034  // AsResponse is the BasicResponseBase implementation for ResponseBase.
  5035  func (rb ResponseBase) AsResponse() (*Response, bool) {
  5036  	return nil, false
  5037  }
  5038  
  5039  // AsBasicResponse is the BasicResponseBase implementation for ResponseBase.
  5040  func (rb ResponseBase) AsBasicResponse() (BasicResponse, bool) {
  5041  	return nil, false
  5042  }
  5043  
  5044  // AsThing is the BasicResponseBase implementation for ResponseBase.
  5045  func (rb ResponseBase) AsThing() (*Thing, bool) {
  5046  	return nil, false
  5047  }
  5048  
  5049  // AsBasicThing is the BasicResponseBase implementation for ResponseBase.
  5050  func (rb ResponseBase) AsBasicThing() (BasicThing, bool) {
  5051  	return nil, false
  5052  }
  5053  
  5054  // AsPlaces is the BasicResponseBase implementation for ResponseBase.
  5055  func (rb ResponseBase) AsPlaces() (*Places, bool) {
  5056  	return nil, false
  5057  }
  5058  
  5059  // AsSearchResultsAnswer is the BasicResponseBase implementation for ResponseBase.
  5060  func (rb ResponseBase) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  5061  	return nil, false
  5062  }
  5063  
  5064  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for ResponseBase.
  5065  func (rb ResponseBase) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  5066  	return nil, false
  5067  }
  5068  
  5069  // AsAnswer is the BasicResponseBase implementation for ResponseBase.
  5070  func (rb ResponseBase) AsAnswer() (*Answer, bool) {
  5071  	return nil, false
  5072  }
  5073  
  5074  // AsBasicAnswer is the BasicResponseBase implementation for ResponseBase.
  5075  func (rb ResponseBase) AsBasicAnswer() (BasicAnswer, bool) {
  5076  	return nil, false
  5077  }
  5078  
  5079  // AsErrorResponse is the BasicResponseBase implementation for ResponseBase.
  5080  func (rb ResponseBase) AsErrorResponse() (*ErrorResponse, bool) {
  5081  	return nil, false
  5082  }
  5083  
  5084  // AsCreativeWork is the BasicResponseBase implementation for ResponseBase.
  5085  func (rb ResponseBase) AsCreativeWork() (*CreativeWork, bool) {
  5086  	return nil, false
  5087  }
  5088  
  5089  // AsBasicCreativeWork is the BasicResponseBase implementation for ResponseBase.
  5090  func (rb ResponseBase) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  5091  	return nil, false
  5092  }
  5093  
  5094  // AsIntangible is the BasicResponseBase implementation for ResponseBase.
  5095  func (rb ResponseBase) AsIntangible() (*Intangible, bool) {
  5096  	return nil, false
  5097  }
  5098  
  5099  // AsBasicIntangible is the BasicResponseBase implementation for ResponseBase.
  5100  func (rb ResponseBase) AsBasicIntangible() (BasicIntangible, bool) {
  5101  	return nil, false
  5102  }
  5103  
  5104  // AsMediaObject is the BasicResponseBase implementation for ResponseBase.
  5105  func (rb ResponseBase) AsMediaObject() (*MediaObject, bool) {
  5106  	return nil, false
  5107  }
  5108  
  5109  // AsBasicMediaObject is the BasicResponseBase implementation for ResponseBase.
  5110  func (rb ResponseBase) AsBasicMediaObject() (BasicMediaObject, bool) {
  5111  	return nil, false
  5112  }
  5113  
  5114  // AsArticle is the BasicResponseBase implementation for ResponseBase.
  5115  func (rb ResponseBase) AsArticle() (*Article, bool) {
  5116  	return nil, false
  5117  }
  5118  
  5119  // AsBasicArticle is the BasicResponseBase implementation for ResponseBase.
  5120  func (rb ResponseBase) AsBasicArticle() (BasicArticle, bool) {
  5121  	return nil, false
  5122  }
  5123  
  5124  // AsStructuredValue is the BasicResponseBase implementation for ResponseBase.
  5125  func (rb ResponseBase) AsStructuredValue() (*StructuredValue, bool) {
  5126  	return nil, false
  5127  }
  5128  
  5129  // AsResponseBase is the BasicResponseBase implementation for ResponseBase.
  5130  func (rb ResponseBase) AsResponseBase() (*ResponseBase, bool) {
  5131  	return &rb, true
  5132  }
  5133  
  5134  // AsBasicResponseBase is the BasicResponseBase implementation for ResponseBase.
  5135  func (rb ResponseBase) AsBasicResponseBase() (BasicResponseBase, bool) {
  5136  	return &rb, true
  5137  }
  5138  
  5139  // SearchResponse defines the top-level object that the response includes when the request succeeds.
  5140  type SearchResponse struct {
  5141  	autorest.Response `json:"-"`
  5142  	// QueryContext - READ-ONLY; An object that contains the query string that Bing used for the request. This object contains the query string as entered by the user. It may also contain an altered query string that Bing used for the query if the query string contained a spelling mistake.
  5143  	QueryContext *QueryContext `json:"queryContext,omitempty"`
  5144  	// WebPages - READ-ONLY; A list of webpages that are relevant to the search query.
  5145  	WebPages *WebWebAnswer `json:"webPages,omitempty"`
  5146  	// Images - READ-ONLY; A list of images that are relevant to the search query.
  5147  	Images *Images `json:"images,omitempty"`
  5148  	// News - READ-ONLY; A list of news articles that are relevant to the search query.
  5149  	News *News `json:"news,omitempty"`
  5150  	// RelatedSearches - READ-ONLY; A list of related queries made by others.
  5151  	RelatedSearches *RelatedSearchesRelatedSearchAnswer `json:"relatedSearches,omitempty"`
  5152  	// SpellSuggestions - READ-ONLY; The query string that likely represents the user's intent.
  5153  	SpellSuggestions *SpellSuggestions `json:"spellSuggestions,omitempty"`
  5154  	// TimeZone - READ-ONLY; The date and time of one or more geographic locations.
  5155  	TimeZone *TimeZone `json:"timeZone,omitempty"`
  5156  	// Videos - READ-ONLY; A list of videos that are relevant to the search query.
  5157  	Videos *Videos `json:"videos,omitempty"`
  5158  	// Computation - READ-ONLY; The answer to a math expression or units conversion expression.
  5159  	Computation *Computation `json:"computation,omitempty"`
  5160  	// RankingResponse - READ-ONLY; The order that Bing suggests that you display the search results in.
  5161  	RankingResponse *RankingRankingResponse `json:"rankingResponse,omitempty"`
  5162  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  5163  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  5164  	// ID - READ-ONLY; A String identifier.
  5165  	ID *string `json:"id,omitempty"`
  5166  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  5167  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  5168  }
  5169  
  5170  // MarshalJSON is the custom marshaler for SearchResponse.
  5171  func (sr SearchResponse) MarshalJSON() ([]byte, error) {
  5172  	sr.Type = TypeSearchResponse
  5173  	objectMap := make(map[string]interface{})
  5174  	if sr.Type != "" {
  5175  		objectMap["_type"] = sr.Type
  5176  	}
  5177  	return json.Marshal(objectMap)
  5178  }
  5179  
  5180  // AsImageObject is the BasicResponseBase implementation for SearchResponse.
  5181  func (sr SearchResponse) AsImageObject() (*ImageObject, bool) {
  5182  	return nil, false
  5183  }
  5184  
  5185  // AsWebPage is the BasicResponseBase implementation for SearchResponse.
  5186  func (sr SearchResponse) AsWebPage() (*WebPage, bool) {
  5187  	return nil, false
  5188  }
  5189  
  5190  // AsWebWebAnswer is the BasicResponseBase implementation for SearchResponse.
  5191  func (sr SearchResponse) AsWebWebAnswer() (*WebWebAnswer, bool) {
  5192  	return nil, false
  5193  }
  5194  
  5195  // AsImages is the BasicResponseBase implementation for SearchResponse.
  5196  func (sr SearchResponse) AsImages() (*Images, bool) {
  5197  	return nil, false
  5198  }
  5199  
  5200  // AsNewsArticle is the BasicResponseBase implementation for SearchResponse.
  5201  func (sr SearchResponse) AsNewsArticle() (*NewsArticle, bool) {
  5202  	return nil, false
  5203  }
  5204  
  5205  // AsNews is the BasicResponseBase implementation for SearchResponse.
  5206  func (sr SearchResponse) AsNews() (*News, bool) {
  5207  	return nil, false
  5208  }
  5209  
  5210  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for SearchResponse.
  5211  func (sr SearchResponse) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  5212  	return nil, false
  5213  }
  5214  
  5215  // AsSpellSuggestions is the BasicResponseBase implementation for SearchResponse.
  5216  func (sr SearchResponse) AsSpellSuggestions() (*SpellSuggestions, bool) {
  5217  	return nil, false
  5218  }
  5219  
  5220  // AsTimeZone is the BasicResponseBase implementation for SearchResponse.
  5221  func (sr SearchResponse) AsTimeZone() (*TimeZone, bool) {
  5222  	return nil, false
  5223  }
  5224  
  5225  // AsVideoObject is the BasicResponseBase implementation for SearchResponse.
  5226  func (sr SearchResponse) AsVideoObject() (*VideoObject, bool) {
  5227  	return nil, false
  5228  }
  5229  
  5230  // AsVideos is the BasicResponseBase implementation for SearchResponse.
  5231  func (sr SearchResponse) AsVideos() (*Videos, bool) {
  5232  	return nil, false
  5233  }
  5234  
  5235  // AsComputation is the BasicResponseBase implementation for SearchResponse.
  5236  func (sr SearchResponse) AsComputation() (*Computation, bool) {
  5237  	return nil, false
  5238  }
  5239  
  5240  // AsIdentifiable is the BasicResponseBase implementation for SearchResponse.
  5241  func (sr SearchResponse) AsIdentifiable() (*Identifiable, bool) {
  5242  	return nil, false
  5243  }
  5244  
  5245  // AsBasicIdentifiable is the BasicResponseBase implementation for SearchResponse.
  5246  func (sr SearchResponse) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  5247  	return &sr, true
  5248  }
  5249  
  5250  // AsSearchResponse is the BasicResponseBase implementation for SearchResponse.
  5251  func (sr SearchResponse) AsSearchResponse() (*SearchResponse, bool) {
  5252  	return &sr, true
  5253  }
  5254  
  5255  // AsResponse is the BasicResponseBase implementation for SearchResponse.
  5256  func (sr SearchResponse) AsResponse() (*Response, bool) {
  5257  	return nil, false
  5258  }
  5259  
  5260  // AsBasicResponse is the BasicResponseBase implementation for SearchResponse.
  5261  func (sr SearchResponse) AsBasicResponse() (BasicResponse, bool) {
  5262  	return &sr, true
  5263  }
  5264  
  5265  // AsThing is the BasicResponseBase implementation for SearchResponse.
  5266  func (sr SearchResponse) AsThing() (*Thing, bool) {
  5267  	return nil, false
  5268  }
  5269  
  5270  // AsBasicThing is the BasicResponseBase implementation for SearchResponse.
  5271  func (sr SearchResponse) AsBasicThing() (BasicThing, bool) {
  5272  	return nil, false
  5273  }
  5274  
  5275  // AsPlaces is the BasicResponseBase implementation for SearchResponse.
  5276  func (sr SearchResponse) AsPlaces() (*Places, bool) {
  5277  	return nil, false
  5278  }
  5279  
  5280  // AsSearchResultsAnswer is the BasicResponseBase implementation for SearchResponse.
  5281  func (sr SearchResponse) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  5282  	return nil, false
  5283  }
  5284  
  5285  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for SearchResponse.
  5286  func (sr SearchResponse) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  5287  	return nil, false
  5288  }
  5289  
  5290  // AsAnswer is the BasicResponseBase implementation for SearchResponse.
  5291  func (sr SearchResponse) AsAnswer() (*Answer, bool) {
  5292  	return nil, false
  5293  }
  5294  
  5295  // AsBasicAnswer is the BasicResponseBase implementation for SearchResponse.
  5296  func (sr SearchResponse) AsBasicAnswer() (BasicAnswer, bool) {
  5297  	return nil, false
  5298  }
  5299  
  5300  // AsErrorResponse is the BasicResponseBase implementation for SearchResponse.
  5301  func (sr SearchResponse) AsErrorResponse() (*ErrorResponse, bool) {
  5302  	return nil, false
  5303  }
  5304  
  5305  // AsCreativeWork is the BasicResponseBase implementation for SearchResponse.
  5306  func (sr SearchResponse) AsCreativeWork() (*CreativeWork, bool) {
  5307  	return nil, false
  5308  }
  5309  
  5310  // AsBasicCreativeWork is the BasicResponseBase implementation for SearchResponse.
  5311  func (sr SearchResponse) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  5312  	return nil, false
  5313  }
  5314  
  5315  // AsIntangible is the BasicResponseBase implementation for SearchResponse.
  5316  func (sr SearchResponse) AsIntangible() (*Intangible, bool) {
  5317  	return nil, false
  5318  }
  5319  
  5320  // AsBasicIntangible is the BasicResponseBase implementation for SearchResponse.
  5321  func (sr SearchResponse) AsBasicIntangible() (BasicIntangible, bool) {
  5322  	return nil, false
  5323  }
  5324  
  5325  // AsMediaObject is the BasicResponseBase implementation for SearchResponse.
  5326  func (sr SearchResponse) AsMediaObject() (*MediaObject, bool) {
  5327  	return nil, false
  5328  }
  5329  
  5330  // AsBasicMediaObject is the BasicResponseBase implementation for SearchResponse.
  5331  func (sr SearchResponse) AsBasicMediaObject() (BasicMediaObject, bool) {
  5332  	return nil, false
  5333  }
  5334  
  5335  // AsArticle is the BasicResponseBase implementation for SearchResponse.
  5336  func (sr SearchResponse) AsArticle() (*Article, bool) {
  5337  	return nil, false
  5338  }
  5339  
  5340  // AsBasicArticle is the BasicResponseBase implementation for SearchResponse.
  5341  func (sr SearchResponse) AsBasicArticle() (BasicArticle, bool) {
  5342  	return nil, false
  5343  }
  5344  
  5345  // AsStructuredValue is the BasicResponseBase implementation for SearchResponse.
  5346  func (sr SearchResponse) AsStructuredValue() (*StructuredValue, bool) {
  5347  	return nil, false
  5348  }
  5349  
  5350  // AsResponseBase is the BasicResponseBase implementation for SearchResponse.
  5351  func (sr SearchResponse) AsResponseBase() (*ResponseBase, bool) {
  5352  	return nil, false
  5353  }
  5354  
  5355  // AsBasicResponseBase is the BasicResponseBase implementation for SearchResponse.
  5356  func (sr SearchResponse) AsBasicResponseBase() (BasicResponseBase, bool) {
  5357  	return &sr, true
  5358  }
  5359  
  5360  // BasicSearchResultsAnswer ...
  5361  type BasicSearchResultsAnswer interface {
  5362  	AsWebWebAnswer() (*WebWebAnswer, bool)
  5363  	AsImages() (*Images, bool)
  5364  	AsNews() (*News, bool)
  5365  	AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool)
  5366  	AsSpellSuggestions() (*SpellSuggestions, bool)
  5367  	AsTimeZone() (*TimeZone, bool)
  5368  	AsVideos() (*Videos, bool)
  5369  	AsPlaces() (*Places, bool)
  5370  	AsSearchResultsAnswer() (*SearchResultsAnswer, bool)
  5371  }
  5372  
  5373  // SearchResultsAnswer ...
  5374  type SearchResultsAnswer struct {
  5375  	// QueryContext - READ-ONLY
  5376  	QueryContext *QueryContext `json:"queryContext,omitempty"`
  5377  	// TotalEstimatedMatches - READ-ONLY; 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.
  5378  	TotalEstimatedMatches *int64 `json:"totalEstimatedMatches,omitempty"`
  5379  	// IsFamilyFriendly - READ-ONLY
  5380  	IsFamilyFriendly *bool `json:"isFamilyFriendly,omitempty"`
  5381  	// FollowUpQueries - READ-ONLY
  5382  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
  5383  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  5384  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  5385  	// ID - READ-ONLY; A String identifier.
  5386  	ID *string `json:"id,omitempty"`
  5387  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  5388  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  5389  }
  5390  
  5391  func unmarshalBasicSearchResultsAnswer(body []byte) (BasicSearchResultsAnswer, error) {
  5392  	var m map[string]interface{}
  5393  	err := json.Unmarshal(body, &m)
  5394  	if err != nil {
  5395  		return nil, err
  5396  	}
  5397  
  5398  	switch m["_type"] {
  5399  	case string(TypeWebWebAnswer):
  5400  		var wwa WebWebAnswer
  5401  		err := json.Unmarshal(body, &wwa)
  5402  		return wwa, err
  5403  	case string(TypeImages):
  5404  		var i Images
  5405  		err := json.Unmarshal(body, &i)
  5406  		return i, err
  5407  	case string(TypeNews):
  5408  		var n News
  5409  		err := json.Unmarshal(body, &n)
  5410  		return n, err
  5411  	case string(TypeRelatedSearchesRelatedSearchAnswer):
  5412  		var rsrsa RelatedSearchesRelatedSearchAnswer
  5413  		err := json.Unmarshal(body, &rsrsa)
  5414  		return rsrsa, err
  5415  	case string(TypeSpellSuggestions):
  5416  		var ss SpellSuggestions
  5417  		err := json.Unmarshal(body, &ss)
  5418  		return ss, err
  5419  	case string(TypeTimeZone):
  5420  		var tz TimeZone
  5421  		err := json.Unmarshal(body, &tz)
  5422  		return tz, err
  5423  	case string(TypeVideos):
  5424  		var vVar Videos
  5425  		err := json.Unmarshal(body, &vVar)
  5426  		return vVar, err
  5427  	case string(TypePlaces):
  5428  		var p Places
  5429  		err := json.Unmarshal(body, &p)
  5430  		return p, err
  5431  	default:
  5432  		var sra SearchResultsAnswer
  5433  		err := json.Unmarshal(body, &sra)
  5434  		return sra, err
  5435  	}
  5436  }
  5437  func unmarshalBasicSearchResultsAnswerArray(body []byte) ([]BasicSearchResultsAnswer, error) {
  5438  	var rawMessages []*json.RawMessage
  5439  	err := json.Unmarshal(body, &rawMessages)
  5440  	if err != nil {
  5441  		return nil, err
  5442  	}
  5443  
  5444  	sraArray := make([]BasicSearchResultsAnswer, len(rawMessages))
  5445  
  5446  	for index, rawMessage := range rawMessages {
  5447  		sra, err := unmarshalBasicSearchResultsAnswer(*rawMessage)
  5448  		if err != nil {
  5449  			return nil, err
  5450  		}
  5451  		sraArray[index] = sra
  5452  	}
  5453  	return sraArray, nil
  5454  }
  5455  
  5456  // MarshalJSON is the custom marshaler for SearchResultsAnswer.
  5457  func (sra SearchResultsAnswer) MarshalJSON() ([]byte, error) {
  5458  	sra.Type = TypeSearchResultsAnswer
  5459  	objectMap := make(map[string]interface{})
  5460  	if sra.Type != "" {
  5461  		objectMap["_type"] = sra.Type
  5462  	}
  5463  	return json.Marshal(objectMap)
  5464  }
  5465  
  5466  // AsImageObject is the BasicResponseBase implementation for SearchResultsAnswer.
  5467  func (sra SearchResultsAnswer) AsImageObject() (*ImageObject, bool) {
  5468  	return nil, false
  5469  }
  5470  
  5471  // AsWebPage is the BasicResponseBase implementation for SearchResultsAnswer.
  5472  func (sra SearchResultsAnswer) AsWebPage() (*WebPage, bool) {
  5473  	return nil, false
  5474  }
  5475  
  5476  // AsWebWebAnswer is the BasicResponseBase implementation for SearchResultsAnswer.
  5477  func (sra SearchResultsAnswer) AsWebWebAnswer() (*WebWebAnswer, bool) {
  5478  	return nil, false
  5479  }
  5480  
  5481  // AsImages is the BasicResponseBase implementation for SearchResultsAnswer.
  5482  func (sra SearchResultsAnswer) AsImages() (*Images, bool) {
  5483  	return nil, false
  5484  }
  5485  
  5486  // AsNewsArticle is the BasicResponseBase implementation for SearchResultsAnswer.
  5487  func (sra SearchResultsAnswer) AsNewsArticle() (*NewsArticle, bool) {
  5488  	return nil, false
  5489  }
  5490  
  5491  // AsNews is the BasicResponseBase implementation for SearchResultsAnswer.
  5492  func (sra SearchResultsAnswer) AsNews() (*News, bool) {
  5493  	return nil, false
  5494  }
  5495  
  5496  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for SearchResultsAnswer.
  5497  func (sra SearchResultsAnswer) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  5498  	return nil, false
  5499  }
  5500  
  5501  // AsSpellSuggestions is the BasicResponseBase implementation for SearchResultsAnswer.
  5502  func (sra SearchResultsAnswer) AsSpellSuggestions() (*SpellSuggestions, bool) {
  5503  	return nil, false
  5504  }
  5505  
  5506  // AsTimeZone is the BasicResponseBase implementation for SearchResultsAnswer.
  5507  func (sra SearchResultsAnswer) AsTimeZone() (*TimeZone, bool) {
  5508  	return nil, false
  5509  }
  5510  
  5511  // AsVideoObject is the BasicResponseBase implementation for SearchResultsAnswer.
  5512  func (sra SearchResultsAnswer) AsVideoObject() (*VideoObject, bool) {
  5513  	return nil, false
  5514  }
  5515  
  5516  // AsVideos is the BasicResponseBase implementation for SearchResultsAnswer.
  5517  func (sra SearchResultsAnswer) AsVideos() (*Videos, bool) {
  5518  	return nil, false
  5519  }
  5520  
  5521  // AsComputation is the BasicResponseBase implementation for SearchResultsAnswer.
  5522  func (sra SearchResultsAnswer) AsComputation() (*Computation, bool) {
  5523  	return nil, false
  5524  }
  5525  
  5526  // AsIdentifiable is the BasicResponseBase implementation for SearchResultsAnswer.
  5527  func (sra SearchResultsAnswer) AsIdentifiable() (*Identifiable, bool) {
  5528  	return nil, false
  5529  }
  5530  
  5531  // AsBasicIdentifiable is the BasicResponseBase implementation for SearchResultsAnswer.
  5532  func (sra SearchResultsAnswer) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  5533  	return &sra, true
  5534  }
  5535  
  5536  // AsSearchResponse is the BasicResponseBase implementation for SearchResultsAnswer.
  5537  func (sra SearchResultsAnswer) AsSearchResponse() (*SearchResponse, bool) {
  5538  	return nil, false
  5539  }
  5540  
  5541  // AsResponse is the BasicResponseBase implementation for SearchResultsAnswer.
  5542  func (sra SearchResultsAnswer) AsResponse() (*Response, bool) {
  5543  	return nil, false
  5544  }
  5545  
  5546  // AsBasicResponse is the BasicResponseBase implementation for SearchResultsAnswer.
  5547  func (sra SearchResultsAnswer) AsBasicResponse() (BasicResponse, bool) {
  5548  	return &sra, true
  5549  }
  5550  
  5551  // AsThing is the BasicResponseBase implementation for SearchResultsAnswer.
  5552  func (sra SearchResultsAnswer) AsThing() (*Thing, bool) {
  5553  	return nil, false
  5554  }
  5555  
  5556  // AsBasicThing is the BasicResponseBase implementation for SearchResultsAnswer.
  5557  func (sra SearchResultsAnswer) AsBasicThing() (BasicThing, bool) {
  5558  	return nil, false
  5559  }
  5560  
  5561  // AsPlaces is the BasicResponseBase implementation for SearchResultsAnswer.
  5562  func (sra SearchResultsAnswer) AsPlaces() (*Places, bool) {
  5563  	return nil, false
  5564  }
  5565  
  5566  // AsSearchResultsAnswer is the BasicResponseBase implementation for SearchResultsAnswer.
  5567  func (sra SearchResultsAnswer) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  5568  	return &sra, true
  5569  }
  5570  
  5571  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for SearchResultsAnswer.
  5572  func (sra SearchResultsAnswer) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  5573  	return &sra, true
  5574  }
  5575  
  5576  // AsAnswer is the BasicResponseBase implementation for SearchResultsAnswer.
  5577  func (sra SearchResultsAnswer) AsAnswer() (*Answer, bool) {
  5578  	return nil, false
  5579  }
  5580  
  5581  // AsBasicAnswer is the BasicResponseBase implementation for SearchResultsAnswer.
  5582  func (sra SearchResultsAnswer) AsBasicAnswer() (BasicAnswer, bool) {
  5583  	return &sra, true
  5584  }
  5585  
  5586  // AsErrorResponse is the BasicResponseBase implementation for SearchResultsAnswer.
  5587  func (sra SearchResultsAnswer) AsErrorResponse() (*ErrorResponse, bool) {
  5588  	return nil, false
  5589  }
  5590  
  5591  // AsCreativeWork is the BasicResponseBase implementation for SearchResultsAnswer.
  5592  func (sra SearchResultsAnswer) AsCreativeWork() (*CreativeWork, bool) {
  5593  	return nil, false
  5594  }
  5595  
  5596  // AsBasicCreativeWork is the BasicResponseBase implementation for SearchResultsAnswer.
  5597  func (sra SearchResultsAnswer) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  5598  	return nil, false
  5599  }
  5600  
  5601  // AsIntangible is the BasicResponseBase implementation for SearchResultsAnswer.
  5602  func (sra SearchResultsAnswer) AsIntangible() (*Intangible, bool) {
  5603  	return nil, false
  5604  }
  5605  
  5606  // AsBasicIntangible is the BasicResponseBase implementation for SearchResultsAnswer.
  5607  func (sra SearchResultsAnswer) AsBasicIntangible() (BasicIntangible, bool) {
  5608  	return nil, false
  5609  }
  5610  
  5611  // AsMediaObject is the BasicResponseBase implementation for SearchResultsAnswer.
  5612  func (sra SearchResultsAnswer) AsMediaObject() (*MediaObject, bool) {
  5613  	return nil, false
  5614  }
  5615  
  5616  // AsBasicMediaObject is the BasicResponseBase implementation for SearchResultsAnswer.
  5617  func (sra SearchResultsAnswer) AsBasicMediaObject() (BasicMediaObject, bool) {
  5618  	return nil, false
  5619  }
  5620  
  5621  // AsArticle is the BasicResponseBase implementation for SearchResultsAnswer.
  5622  func (sra SearchResultsAnswer) AsArticle() (*Article, bool) {
  5623  	return nil, false
  5624  }
  5625  
  5626  // AsBasicArticle is the BasicResponseBase implementation for SearchResultsAnswer.
  5627  func (sra SearchResultsAnswer) AsBasicArticle() (BasicArticle, bool) {
  5628  	return nil, false
  5629  }
  5630  
  5631  // AsStructuredValue is the BasicResponseBase implementation for SearchResultsAnswer.
  5632  func (sra SearchResultsAnswer) AsStructuredValue() (*StructuredValue, bool) {
  5633  	return nil, false
  5634  }
  5635  
  5636  // AsResponseBase is the BasicResponseBase implementation for SearchResultsAnswer.
  5637  func (sra SearchResultsAnswer) AsResponseBase() (*ResponseBase, bool) {
  5638  	return nil, false
  5639  }
  5640  
  5641  // AsBasicResponseBase is the BasicResponseBase implementation for SearchResultsAnswer.
  5642  func (sra SearchResultsAnswer) AsBasicResponseBase() (BasicResponseBase, bool) {
  5643  	return &sra, true
  5644  }
  5645  
  5646  // SpellSuggestions defines a suggested query string that likely represents the user's intent. The search
  5647  // results include this response if Bing determines that the user may have intended to search for something
  5648  // different. For example, if the user searches for alon brown, Bing may determine that the user likely
  5649  // intended to search for Alton Brown instead (based on past searches by others of Alon Brown).
  5650  type SpellSuggestions struct {
  5651  	// Value - A list of suggested query strings that may represent the user's intention. The list contains only one Query object.
  5652  	Value *[]Query `json:"value,omitempty"`
  5653  	// QueryContext - READ-ONLY
  5654  	QueryContext *QueryContext `json:"queryContext,omitempty"`
  5655  	// TotalEstimatedMatches - READ-ONLY; 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.
  5656  	TotalEstimatedMatches *int64 `json:"totalEstimatedMatches,omitempty"`
  5657  	// IsFamilyFriendly - READ-ONLY
  5658  	IsFamilyFriendly *bool `json:"isFamilyFriendly,omitempty"`
  5659  	// FollowUpQueries - READ-ONLY
  5660  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
  5661  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  5662  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  5663  	// ID - READ-ONLY; A String identifier.
  5664  	ID *string `json:"id,omitempty"`
  5665  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  5666  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  5667  }
  5668  
  5669  // MarshalJSON is the custom marshaler for SpellSuggestions.
  5670  func (ss SpellSuggestions) MarshalJSON() ([]byte, error) {
  5671  	ss.Type = TypeSpellSuggestions
  5672  	objectMap := make(map[string]interface{})
  5673  	if ss.Value != nil {
  5674  		objectMap["value"] = ss.Value
  5675  	}
  5676  	if ss.Type != "" {
  5677  		objectMap["_type"] = ss.Type
  5678  	}
  5679  	return json.Marshal(objectMap)
  5680  }
  5681  
  5682  // AsImageObject is the BasicResponseBase implementation for SpellSuggestions.
  5683  func (ss SpellSuggestions) AsImageObject() (*ImageObject, bool) {
  5684  	return nil, false
  5685  }
  5686  
  5687  // AsWebPage is the BasicResponseBase implementation for SpellSuggestions.
  5688  func (ss SpellSuggestions) AsWebPage() (*WebPage, bool) {
  5689  	return nil, false
  5690  }
  5691  
  5692  // AsWebWebAnswer is the BasicResponseBase implementation for SpellSuggestions.
  5693  func (ss SpellSuggestions) AsWebWebAnswer() (*WebWebAnswer, bool) {
  5694  	return nil, false
  5695  }
  5696  
  5697  // AsImages is the BasicResponseBase implementation for SpellSuggestions.
  5698  func (ss SpellSuggestions) AsImages() (*Images, bool) {
  5699  	return nil, false
  5700  }
  5701  
  5702  // AsNewsArticle is the BasicResponseBase implementation for SpellSuggestions.
  5703  func (ss SpellSuggestions) AsNewsArticle() (*NewsArticle, bool) {
  5704  	return nil, false
  5705  }
  5706  
  5707  // AsNews is the BasicResponseBase implementation for SpellSuggestions.
  5708  func (ss SpellSuggestions) AsNews() (*News, bool) {
  5709  	return nil, false
  5710  }
  5711  
  5712  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for SpellSuggestions.
  5713  func (ss SpellSuggestions) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  5714  	return nil, false
  5715  }
  5716  
  5717  // AsSpellSuggestions is the BasicResponseBase implementation for SpellSuggestions.
  5718  func (ss SpellSuggestions) AsSpellSuggestions() (*SpellSuggestions, bool) {
  5719  	return &ss, true
  5720  }
  5721  
  5722  // AsTimeZone is the BasicResponseBase implementation for SpellSuggestions.
  5723  func (ss SpellSuggestions) AsTimeZone() (*TimeZone, bool) {
  5724  	return nil, false
  5725  }
  5726  
  5727  // AsVideoObject is the BasicResponseBase implementation for SpellSuggestions.
  5728  func (ss SpellSuggestions) AsVideoObject() (*VideoObject, bool) {
  5729  	return nil, false
  5730  }
  5731  
  5732  // AsVideos is the BasicResponseBase implementation for SpellSuggestions.
  5733  func (ss SpellSuggestions) AsVideos() (*Videos, bool) {
  5734  	return nil, false
  5735  }
  5736  
  5737  // AsComputation is the BasicResponseBase implementation for SpellSuggestions.
  5738  func (ss SpellSuggestions) AsComputation() (*Computation, bool) {
  5739  	return nil, false
  5740  }
  5741  
  5742  // AsIdentifiable is the BasicResponseBase implementation for SpellSuggestions.
  5743  func (ss SpellSuggestions) AsIdentifiable() (*Identifiable, bool) {
  5744  	return nil, false
  5745  }
  5746  
  5747  // AsBasicIdentifiable is the BasicResponseBase implementation for SpellSuggestions.
  5748  func (ss SpellSuggestions) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  5749  	return &ss, true
  5750  }
  5751  
  5752  // AsSearchResponse is the BasicResponseBase implementation for SpellSuggestions.
  5753  func (ss SpellSuggestions) AsSearchResponse() (*SearchResponse, bool) {
  5754  	return nil, false
  5755  }
  5756  
  5757  // AsResponse is the BasicResponseBase implementation for SpellSuggestions.
  5758  func (ss SpellSuggestions) AsResponse() (*Response, bool) {
  5759  	return nil, false
  5760  }
  5761  
  5762  // AsBasicResponse is the BasicResponseBase implementation for SpellSuggestions.
  5763  func (ss SpellSuggestions) AsBasicResponse() (BasicResponse, bool) {
  5764  	return &ss, true
  5765  }
  5766  
  5767  // AsThing is the BasicResponseBase implementation for SpellSuggestions.
  5768  func (ss SpellSuggestions) AsThing() (*Thing, bool) {
  5769  	return nil, false
  5770  }
  5771  
  5772  // AsBasicThing is the BasicResponseBase implementation for SpellSuggestions.
  5773  func (ss SpellSuggestions) AsBasicThing() (BasicThing, bool) {
  5774  	return nil, false
  5775  }
  5776  
  5777  // AsPlaces is the BasicResponseBase implementation for SpellSuggestions.
  5778  func (ss SpellSuggestions) AsPlaces() (*Places, bool) {
  5779  	return nil, false
  5780  }
  5781  
  5782  // AsSearchResultsAnswer is the BasicResponseBase implementation for SpellSuggestions.
  5783  func (ss SpellSuggestions) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  5784  	return nil, false
  5785  }
  5786  
  5787  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for SpellSuggestions.
  5788  func (ss SpellSuggestions) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  5789  	return &ss, true
  5790  }
  5791  
  5792  // AsAnswer is the BasicResponseBase implementation for SpellSuggestions.
  5793  func (ss SpellSuggestions) AsAnswer() (*Answer, bool) {
  5794  	return nil, false
  5795  }
  5796  
  5797  // AsBasicAnswer is the BasicResponseBase implementation for SpellSuggestions.
  5798  func (ss SpellSuggestions) AsBasicAnswer() (BasicAnswer, bool) {
  5799  	return &ss, true
  5800  }
  5801  
  5802  // AsErrorResponse is the BasicResponseBase implementation for SpellSuggestions.
  5803  func (ss SpellSuggestions) AsErrorResponse() (*ErrorResponse, bool) {
  5804  	return nil, false
  5805  }
  5806  
  5807  // AsCreativeWork is the BasicResponseBase implementation for SpellSuggestions.
  5808  func (ss SpellSuggestions) AsCreativeWork() (*CreativeWork, bool) {
  5809  	return nil, false
  5810  }
  5811  
  5812  // AsBasicCreativeWork is the BasicResponseBase implementation for SpellSuggestions.
  5813  func (ss SpellSuggestions) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  5814  	return nil, false
  5815  }
  5816  
  5817  // AsIntangible is the BasicResponseBase implementation for SpellSuggestions.
  5818  func (ss SpellSuggestions) AsIntangible() (*Intangible, bool) {
  5819  	return nil, false
  5820  }
  5821  
  5822  // AsBasicIntangible is the BasicResponseBase implementation for SpellSuggestions.
  5823  func (ss SpellSuggestions) AsBasicIntangible() (BasicIntangible, bool) {
  5824  	return nil, false
  5825  }
  5826  
  5827  // AsMediaObject is the BasicResponseBase implementation for SpellSuggestions.
  5828  func (ss SpellSuggestions) AsMediaObject() (*MediaObject, bool) {
  5829  	return nil, false
  5830  }
  5831  
  5832  // AsBasicMediaObject is the BasicResponseBase implementation for SpellSuggestions.
  5833  func (ss SpellSuggestions) AsBasicMediaObject() (BasicMediaObject, bool) {
  5834  	return nil, false
  5835  }
  5836  
  5837  // AsArticle is the BasicResponseBase implementation for SpellSuggestions.
  5838  func (ss SpellSuggestions) AsArticle() (*Article, bool) {
  5839  	return nil, false
  5840  }
  5841  
  5842  // AsBasicArticle is the BasicResponseBase implementation for SpellSuggestions.
  5843  func (ss SpellSuggestions) AsBasicArticle() (BasicArticle, bool) {
  5844  	return nil, false
  5845  }
  5846  
  5847  // AsStructuredValue is the BasicResponseBase implementation for SpellSuggestions.
  5848  func (ss SpellSuggestions) AsStructuredValue() (*StructuredValue, bool) {
  5849  	return nil, false
  5850  }
  5851  
  5852  // AsResponseBase is the BasicResponseBase implementation for SpellSuggestions.
  5853  func (ss SpellSuggestions) AsResponseBase() (*ResponseBase, bool) {
  5854  	return nil, false
  5855  }
  5856  
  5857  // AsBasicResponseBase is the BasicResponseBase implementation for SpellSuggestions.
  5858  func (ss SpellSuggestions) AsBasicResponseBase() (BasicResponseBase, bool) {
  5859  	return &ss, true
  5860  }
  5861  
  5862  // StructuredValue ...
  5863  type StructuredValue struct {
  5864  	// Name - READ-ONLY; The name of the thing represented by this object.
  5865  	Name *string `json:"name,omitempty"`
  5866  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
  5867  	URL *string `json:"url,omitempty"`
  5868  	// Image - READ-ONLY
  5869  	Image *ImageObject `json:"image,omitempty"`
  5870  	// Description - READ-ONLY; A short description of the item.
  5871  	Description *string `json:"description,omitempty"`
  5872  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
  5873  	BingID *string `json:"bingId,omitempty"`
  5874  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  5875  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  5876  	// ID - READ-ONLY; A String identifier.
  5877  	ID *string `json:"id,omitempty"`
  5878  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  5879  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  5880  }
  5881  
  5882  // MarshalJSON is the custom marshaler for StructuredValue.
  5883  func (sv StructuredValue) MarshalJSON() ([]byte, error) {
  5884  	sv.Type = TypeStructuredValue
  5885  	objectMap := make(map[string]interface{})
  5886  	if sv.Type != "" {
  5887  		objectMap["_type"] = sv.Type
  5888  	}
  5889  	return json.Marshal(objectMap)
  5890  }
  5891  
  5892  // AsImageObject is the BasicResponseBase implementation for StructuredValue.
  5893  func (sv StructuredValue) AsImageObject() (*ImageObject, bool) {
  5894  	return nil, false
  5895  }
  5896  
  5897  // AsWebPage is the BasicResponseBase implementation for StructuredValue.
  5898  func (sv StructuredValue) AsWebPage() (*WebPage, bool) {
  5899  	return nil, false
  5900  }
  5901  
  5902  // AsWebWebAnswer is the BasicResponseBase implementation for StructuredValue.
  5903  func (sv StructuredValue) AsWebWebAnswer() (*WebWebAnswer, bool) {
  5904  	return nil, false
  5905  }
  5906  
  5907  // AsImages is the BasicResponseBase implementation for StructuredValue.
  5908  func (sv StructuredValue) AsImages() (*Images, bool) {
  5909  	return nil, false
  5910  }
  5911  
  5912  // AsNewsArticle is the BasicResponseBase implementation for StructuredValue.
  5913  func (sv StructuredValue) AsNewsArticle() (*NewsArticle, bool) {
  5914  	return nil, false
  5915  }
  5916  
  5917  // AsNews is the BasicResponseBase implementation for StructuredValue.
  5918  func (sv StructuredValue) AsNews() (*News, bool) {
  5919  	return nil, false
  5920  }
  5921  
  5922  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for StructuredValue.
  5923  func (sv StructuredValue) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  5924  	return nil, false
  5925  }
  5926  
  5927  // AsSpellSuggestions is the BasicResponseBase implementation for StructuredValue.
  5928  func (sv StructuredValue) AsSpellSuggestions() (*SpellSuggestions, bool) {
  5929  	return nil, false
  5930  }
  5931  
  5932  // AsTimeZone is the BasicResponseBase implementation for StructuredValue.
  5933  func (sv StructuredValue) AsTimeZone() (*TimeZone, bool) {
  5934  	return nil, false
  5935  }
  5936  
  5937  // AsVideoObject is the BasicResponseBase implementation for StructuredValue.
  5938  func (sv StructuredValue) AsVideoObject() (*VideoObject, bool) {
  5939  	return nil, false
  5940  }
  5941  
  5942  // AsVideos is the BasicResponseBase implementation for StructuredValue.
  5943  func (sv StructuredValue) AsVideos() (*Videos, bool) {
  5944  	return nil, false
  5945  }
  5946  
  5947  // AsComputation is the BasicResponseBase implementation for StructuredValue.
  5948  func (sv StructuredValue) AsComputation() (*Computation, bool) {
  5949  	return nil, false
  5950  }
  5951  
  5952  // AsIdentifiable is the BasicResponseBase implementation for StructuredValue.
  5953  func (sv StructuredValue) AsIdentifiable() (*Identifiable, bool) {
  5954  	return nil, false
  5955  }
  5956  
  5957  // AsBasicIdentifiable is the BasicResponseBase implementation for StructuredValue.
  5958  func (sv StructuredValue) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  5959  	return &sv, true
  5960  }
  5961  
  5962  // AsSearchResponse is the BasicResponseBase implementation for StructuredValue.
  5963  func (sv StructuredValue) AsSearchResponse() (*SearchResponse, bool) {
  5964  	return nil, false
  5965  }
  5966  
  5967  // AsResponse is the BasicResponseBase implementation for StructuredValue.
  5968  func (sv StructuredValue) AsResponse() (*Response, bool) {
  5969  	return nil, false
  5970  }
  5971  
  5972  // AsBasicResponse is the BasicResponseBase implementation for StructuredValue.
  5973  func (sv StructuredValue) AsBasicResponse() (BasicResponse, bool) {
  5974  	return &sv, true
  5975  }
  5976  
  5977  // AsThing is the BasicResponseBase implementation for StructuredValue.
  5978  func (sv StructuredValue) AsThing() (*Thing, bool) {
  5979  	return nil, false
  5980  }
  5981  
  5982  // AsBasicThing is the BasicResponseBase implementation for StructuredValue.
  5983  func (sv StructuredValue) AsBasicThing() (BasicThing, bool) {
  5984  	return &sv, true
  5985  }
  5986  
  5987  // AsPlaces is the BasicResponseBase implementation for StructuredValue.
  5988  func (sv StructuredValue) AsPlaces() (*Places, bool) {
  5989  	return nil, false
  5990  }
  5991  
  5992  // AsSearchResultsAnswer is the BasicResponseBase implementation for StructuredValue.
  5993  func (sv StructuredValue) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  5994  	return nil, false
  5995  }
  5996  
  5997  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for StructuredValue.
  5998  func (sv StructuredValue) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  5999  	return nil, false
  6000  }
  6001  
  6002  // AsAnswer is the BasicResponseBase implementation for StructuredValue.
  6003  func (sv StructuredValue) AsAnswer() (*Answer, bool) {
  6004  	return nil, false
  6005  }
  6006  
  6007  // AsBasicAnswer is the BasicResponseBase implementation for StructuredValue.
  6008  func (sv StructuredValue) AsBasicAnswer() (BasicAnswer, bool) {
  6009  	return nil, false
  6010  }
  6011  
  6012  // AsErrorResponse is the BasicResponseBase implementation for StructuredValue.
  6013  func (sv StructuredValue) AsErrorResponse() (*ErrorResponse, bool) {
  6014  	return nil, false
  6015  }
  6016  
  6017  // AsCreativeWork is the BasicResponseBase implementation for StructuredValue.
  6018  func (sv StructuredValue) AsCreativeWork() (*CreativeWork, bool) {
  6019  	return nil, false
  6020  }
  6021  
  6022  // AsBasicCreativeWork is the BasicResponseBase implementation for StructuredValue.
  6023  func (sv StructuredValue) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  6024  	return nil, false
  6025  }
  6026  
  6027  // AsIntangible is the BasicResponseBase implementation for StructuredValue.
  6028  func (sv StructuredValue) AsIntangible() (*Intangible, bool) {
  6029  	return nil, false
  6030  }
  6031  
  6032  // AsBasicIntangible is the BasicResponseBase implementation for StructuredValue.
  6033  func (sv StructuredValue) AsBasicIntangible() (BasicIntangible, bool) {
  6034  	return &sv, true
  6035  }
  6036  
  6037  // AsMediaObject is the BasicResponseBase implementation for StructuredValue.
  6038  func (sv StructuredValue) AsMediaObject() (*MediaObject, bool) {
  6039  	return nil, false
  6040  }
  6041  
  6042  // AsBasicMediaObject is the BasicResponseBase implementation for StructuredValue.
  6043  func (sv StructuredValue) AsBasicMediaObject() (BasicMediaObject, bool) {
  6044  	return nil, false
  6045  }
  6046  
  6047  // AsArticle is the BasicResponseBase implementation for StructuredValue.
  6048  func (sv StructuredValue) AsArticle() (*Article, bool) {
  6049  	return nil, false
  6050  }
  6051  
  6052  // AsBasicArticle is the BasicResponseBase implementation for StructuredValue.
  6053  func (sv StructuredValue) AsBasicArticle() (BasicArticle, bool) {
  6054  	return nil, false
  6055  }
  6056  
  6057  // AsStructuredValue is the BasicResponseBase implementation for StructuredValue.
  6058  func (sv StructuredValue) AsStructuredValue() (*StructuredValue, bool) {
  6059  	return &sv, true
  6060  }
  6061  
  6062  // AsResponseBase is the BasicResponseBase implementation for StructuredValue.
  6063  func (sv StructuredValue) AsResponseBase() (*ResponseBase, bool) {
  6064  	return nil, false
  6065  }
  6066  
  6067  // AsBasicResponseBase is the BasicResponseBase implementation for StructuredValue.
  6068  func (sv StructuredValue) AsBasicResponseBase() (BasicResponseBase, bool) {
  6069  	return &sv, true
  6070  }
  6071  
  6072  // BasicThing ...
  6073  type BasicThing interface {
  6074  	AsImageObject() (*ImageObject, bool)
  6075  	AsWebPage() (*WebPage, bool)
  6076  	AsNewsArticle() (*NewsArticle, bool)
  6077  	AsVideoObject() (*VideoObject, bool)
  6078  	AsCreativeWork() (*CreativeWork, bool)
  6079  	AsBasicCreativeWork() (BasicCreativeWork, bool)
  6080  	AsIntangible() (*Intangible, bool)
  6081  	AsBasicIntangible() (BasicIntangible, bool)
  6082  	AsMediaObject() (*MediaObject, bool)
  6083  	AsBasicMediaObject() (BasicMediaObject, bool)
  6084  	AsArticle() (*Article, bool)
  6085  	AsBasicArticle() (BasicArticle, bool)
  6086  	AsStructuredValue() (*StructuredValue, bool)
  6087  	AsThing() (*Thing, bool)
  6088  }
  6089  
  6090  // Thing ...
  6091  type Thing struct {
  6092  	// Name - READ-ONLY; The name of the thing represented by this object.
  6093  	Name *string `json:"name,omitempty"`
  6094  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
  6095  	URL *string `json:"url,omitempty"`
  6096  	// Image - READ-ONLY
  6097  	Image *ImageObject `json:"image,omitempty"`
  6098  	// Description - READ-ONLY; A short description of the item.
  6099  	Description *string `json:"description,omitempty"`
  6100  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
  6101  	BingID *string `json:"bingId,omitempty"`
  6102  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  6103  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  6104  	// ID - READ-ONLY; A String identifier.
  6105  	ID *string `json:"id,omitempty"`
  6106  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  6107  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  6108  }
  6109  
  6110  func unmarshalBasicThing(body []byte) (BasicThing, error) {
  6111  	var m map[string]interface{}
  6112  	err := json.Unmarshal(body, &m)
  6113  	if err != nil {
  6114  		return nil, err
  6115  	}
  6116  
  6117  	switch m["_type"] {
  6118  	case string(TypeImageObject):
  6119  		var ioVar ImageObject
  6120  		err := json.Unmarshal(body, &ioVar)
  6121  		return ioVar, err
  6122  	case string(TypeWebPage):
  6123  		var wp WebPage
  6124  		err := json.Unmarshal(body, &wp)
  6125  		return wp, err
  6126  	case string(TypeNewsArticle):
  6127  		var na NewsArticle
  6128  		err := json.Unmarshal(body, &na)
  6129  		return na, err
  6130  	case string(TypeVideoObject):
  6131  		var vo VideoObject
  6132  		err := json.Unmarshal(body, &vo)
  6133  		return vo, err
  6134  	case string(TypeCreativeWork):
  6135  		var cw CreativeWork
  6136  		err := json.Unmarshal(body, &cw)
  6137  		return cw, err
  6138  	case string(TypeIntangible):
  6139  		var i Intangible
  6140  		err := json.Unmarshal(body, &i)
  6141  		return i, err
  6142  	case string(TypeMediaObject):
  6143  		var mo MediaObject
  6144  		err := json.Unmarshal(body, &mo)
  6145  		return mo, err
  6146  	case string(TypeArticle):
  6147  		var a Article
  6148  		err := json.Unmarshal(body, &a)
  6149  		return a, err
  6150  	case string(TypeStructuredValue):
  6151  		var sv StructuredValue
  6152  		err := json.Unmarshal(body, &sv)
  6153  		return sv, err
  6154  	default:
  6155  		var t Thing
  6156  		err := json.Unmarshal(body, &t)
  6157  		return t, err
  6158  	}
  6159  }
  6160  func unmarshalBasicThingArray(body []byte) ([]BasicThing, error) {
  6161  	var rawMessages []*json.RawMessage
  6162  	err := json.Unmarshal(body, &rawMessages)
  6163  	if err != nil {
  6164  		return nil, err
  6165  	}
  6166  
  6167  	tArray := make([]BasicThing, len(rawMessages))
  6168  
  6169  	for index, rawMessage := range rawMessages {
  6170  		t, err := unmarshalBasicThing(*rawMessage)
  6171  		if err != nil {
  6172  			return nil, err
  6173  		}
  6174  		tArray[index] = t
  6175  	}
  6176  	return tArray, nil
  6177  }
  6178  
  6179  // MarshalJSON is the custom marshaler for Thing.
  6180  func (t Thing) MarshalJSON() ([]byte, error) {
  6181  	t.Type = TypeThing
  6182  	objectMap := make(map[string]interface{})
  6183  	if t.Type != "" {
  6184  		objectMap["_type"] = t.Type
  6185  	}
  6186  	return json.Marshal(objectMap)
  6187  }
  6188  
  6189  // AsImageObject is the BasicResponseBase implementation for Thing.
  6190  func (t Thing) AsImageObject() (*ImageObject, bool) {
  6191  	return nil, false
  6192  }
  6193  
  6194  // AsWebPage is the BasicResponseBase implementation for Thing.
  6195  func (t Thing) AsWebPage() (*WebPage, bool) {
  6196  	return nil, false
  6197  }
  6198  
  6199  // AsWebWebAnswer is the BasicResponseBase implementation for Thing.
  6200  func (t Thing) AsWebWebAnswer() (*WebWebAnswer, bool) {
  6201  	return nil, false
  6202  }
  6203  
  6204  // AsImages is the BasicResponseBase implementation for Thing.
  6205  func (t Thing) AsImages() (*Images, bool) {
  6206  	return nil, false
  6207  }
  6208  
  6209  // AsNewsArticle is the BasicResponseBase implementation for Thing.
  6210  func (t Thing) AsNewsArticle() (*NewsArticle, bool) {
  6211  	return nil, false
  6212  }
  6213  
  6214  // AsNews is the BasicResponseBase implementation for Thing.
  6215  func (t Thing) AsNews() (*News, bool) {
  6216  	return nil, false
  6217  }
  6218  
  6219  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for Thing.
  6220  func (t Thing) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  6221  	return nil, false
  6222  }
  6223  
  6224  // AsSpellSuggestions is the BasicResponseBase implementation for Thing.
  6225  func (t Thing) AsSpellSuggestions() (*SpellSuggestions, bool) {
  6226  	return nil, false
  6227  }
  6228  
  6229  // AsTimeZone is the BasicResponseBase implementation for Thing.
  6230  func (t Thing) AsTimeZone() (*TimeZone, bool) {
  6231  	return nil, false
  6232  }
  6233  
  6234  // AsVideoObject is the BasicResponseBase implementation for Thing.
  6235  func (t Thing) AsVideoObject() (*VideoObject, bool) {
  6236  	return nil, false
  6237  }
  6238  
  6239  // AsVideos is the BasicResponseBase implementation for Thing.
  6240  func (t Thing) AsVideos() (*Videos, bool) {
  6241  	return nil, false
  6242  }
  6243  
  6244  // AsComputation is the BasicResponseBase implementation for Thing.
  6245  func (t Thing) AsComputation() (*Computation, bool) {
  6246  	return nil, false
  6247  }
  6248  
  6249  // AsIdentifiable is the BasicResponseBase implementation for Thing.
  6250  func (t Thing) AsIdentifiable() (*Identifiable, bool) {
  6251  	return nil, false
  6252  }
  6253  
  6254  // AsBasicIdentifiable is the BasicResponseBase implementation for Thing.
  6255  func (t Thing) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  6256  	return &t, true
  6257  }
  6258  
  6259  // AsSearchResponse is the BasicResponseBase implementation for Thing.
  6260  func (t Thing) AsSearchResponse() (*SearchResponse, bool) {
  6261  	return nil, false
  6262  }
  6263  
  6264  // AsResponse is the BasicResponseBase implementation for Thing.
  6265  func (t Thing) AsResponse() (*Response, bool) {
  6266  	return nil, false
  6267  }
  6268  
  6269  // AsBasicResponse is the BasicResponseBase implementation for Thing.
  6270  func (t Thing) AsBasicResponse() (BasicResponse, bool) {
  6271  	return &t, true
  6272  }
  6273  
  6274  // AsThing is the BasicResponseBase implementation for Thing.
  6275  func (t Thing) AsThing() (*Thing, bool) {
  6276  	return &t, true
  6277  }
  6278  
  6279  // AsBasicThing is the BasicResponseBase implementation for Thing.
  6280  func (t Thing) AsBasicThing() (BasicThing, bool) {
  6281  	return &t, true
  6282  }
  6283  
  6284  // AsPlaces is the BasicResponseBase implementation for Thing.
  6285  func (t Thing) AsPlaces() (*Places, bool) {
  6286  	return nil, false
  6287  }
  6288  
  6289  // AsSearchResultsAnswer is the BasicResponseBase implementation for Thing.
  6290  func (t Thing) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  6291  	return nil, false
  6292  }
  6293  
  6294  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Thing.
  6295  func (t Thing) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  6296  	return nil, false
  6297  }
  6298  
  6299  // AsAnswer is the BasicResponseBase implementation for Thing.
  6300  func (t Thing) AsAnswer() (*Answer, bool) {
  6301  	return nil, false
  6302  }
  6303  
  6304  // AsBasicAnswer is the BasicResponseBase implementation for Thing.
  6305  func (t Thing) AsBasicAnswer() (BasicAnswer, bool) {
  6306  	return nil, false
  6307  }
  6308  
  6309  // AsErrorResponse is the BasicResponseBase implementation for Thing.
  6310  func (t Thing) AsErrorResponse() (*ErrorResponse, bool) {
  6311  	return nil, false
  6312  }
  6313  
  6314  // AsCreativeWork is the BasicResponseBase implementation for Thing.
  6315  func (t Thing) AsCreativeWork() (*CreativeWork, bool) {
  6316  	return nil, false
  6317  }
  6318  
  6319  // AsBasicCreativeWork is the BasicResponseBase implementation for Thing.
  6320  func (t Thing) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  6321  	return nil, false
  6322  }
  6323  
  6324  // AsIntangible is the BasicResponseBase implementation for Thing.
  6325  func (t Thing) AsIntangible() (*Intangible, bool) {
  6326  	return nil, false
  6327  }
  6328  
  6329  // AsBasicIntangible is the BasicResponseBase implementation for Thing.
  6330  func (t Thing) AsBasicIntangible() (BasicIntangible, bool) {
  6331  	return nil, false
  6332  }
  6333  
  6334  // AsMediaObject is the BasicResponseBase implementation for Thing.
  6335  func (t Thing) AsMediaObject() (*MediaObject, bool) {
  6336  	return nil, false
  6337  }
  6338  
  6339  // AsBasicMediaObject is the BasicResponseBase implementation for Thing.
  6340  func (t Thing) AsBasicMediaObject() (BasicMediaObject, bool) {
  6341  	return nil, false
  6342  }
  6343  
  6344  // AsArticle is the BasicResponseBase implementation for Thing.
  6345  func (t Thing) AsArticle() (*Article, bool) {
  6346  	return nil, false
  6347  }
  6348  
  6349  // AsBasicArticle is the BasicResponseBase implementation for Thing.
  6350  func (t Thing) AsBasicArticle() (BasicArticle, bool) {
  6351  	return nil, false
  6352  }
  6353  
  6354  // AsStructuredValue is the BasicResponseBase implementation for Thing.
  6355  func (t Thing) AsStructuredValue() (*StructuredValue, bool) {
  6356  	return nil, false
  6357  }
  6358  
  6359  // AsResponseBase is the BasicResponseBase implementation for Thing.
  6360  func (t Thing) AsResponseBase() (*ResponseBase, bool) {
  6361  	return nil, false
  6362  }
  6363  
  6364  // AsBasicResponseBase is the BasicResponseBase implementation for Thing.
  6365  func (t Thing) AsBasicResponseBase() (BasicResponseBase, bool) {
  6366  	return &t, true
  6367  }
  6368  
  6369  // TimeZone defines the data and time of one or more geographic locations.
  6370  type TimeZone struct {
  6371  	// PrimaryCityTime - The data and time, in UTC, of the geographic location specified in the query. If the query specified a specific geographic location (for example, a city), this object contains the name of the geographic location and the current date and time of the location, in UTC. If the query specified a general geographic location, such as a state or country, this object contains the date and time of the primary city or state found in the specified state or country. If the location contains additional time zones, the otherCityTimes field contains the data and time of cities or states located in the other time zones.
  6372  	PrimaryCityTime *TimeZoneTimeZoneInformation `json:"primaryCityTime,omitempty"`
  6373  	// OtherCityTimes - READ-ONLY; A list of dates and times of nearby time zones.
  6374  	OtherCityTimes *[]TimeZoneTimeZoneInformation `json:"otherCityTimes,omitempty"`
  6375  	// QueryContext - READ-ONLY
  6376  	QueryContext *QueryContext `json:"queryContext,omitempty"`
  6377  	// TotalEstimatedMatches - READ-ONLY; 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.
  6378  	TotalEstimatedMatches *int64 `json:"totalEstimatedMatches,omitempty"`
  6379  	// IsFamilyFriendly - READ-ONLY
  6380  	IsFamilyFriendly *bool `json:"isFamilyFriendly,omitempty"`
  6381  	// FollowUpQueries - READ-ONLY
  6382  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
  6383  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  6384  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  6385  	// ID - READ-ONLY; A String identifier.
  6386  	ID *string `json:"id,omitempty"`
  6387  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  6388  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  6389  }
  6390  
  6391  // MarshalJSON is the custom marshaler for TimeZone.
  6392  func (tz TimeZone) MarshalJSON() ([]byte, error) {
  6393  	tz.Type = TypeTimeZone
  6394  	objectMap := make(map[string]interface{})
  6395  	if tz.PrimaryCityTime != nil {
  6396  		objectMap["primaryCityTime"] = tz.PrimaryCityTime
  6397  	}
  6398  	if tz.Type != "" {
  6399  		objectMap["_type"] = tz.Type
  6400  	}
  6401  	return json.Marshal(objectMap)
  6402  }
  6403  
  6404  // AsImageObject is the BasicResponseBase implementation for TimeZone.
  6405  func (tz TimeZone) AsImageObject() (*ImageObject, bool) {
  6406  	return nil, false
  6407  }
  6408  
  6409  // AsWebPage is the BasicResponseBase implementation for TimeZone.
  6410  func (tz TimeZone) AsWebPage() (*WebPage, bool) {
  6411  	return nil, false
  6412  }
  6413  
  6414  // AsWebWebAnswer is the BasicResponseBase implementation for TimeZone.
  6415  func (tz TimeZone) AsWebWebAnswer() (*WebWebAnswer, bool) {
  6416  	return nil, false
  6417  }
  6418  
  6419  // AsImages is the BasicResponseBase implementation for TimeZone.
  6420  func (tz TimeZone) AsImages() (*Images, bool) {
  6421  	return nil, false
  6422  }
  6423  
  6424  // AsNewsArticle is the BasicResponseBase implementation for TimeZone.
  6425  func (tz TimeZone) AsNewsArticle() (*NewsArticle, bool) {
  6426  	return nil, false
  6427  }
  6428  
  6429  // AsNews is the BasicResponseBase implementation for TimeZone.
  6430  func (tz TimeZone) AsNews() (*News, bool) {
  6431  	return nil, false
  6432  }
  6433  
  6434  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for TimeZone.
  6435  func (tz TimeZone) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  6436  	return nil, false
  6437  }
  6438  
  6439  // AsSpellSuggestions is the BasicResponseBase implementation for TimeZone.
  6440  func (tz TimeZone) AsSpellSuggestions() (*SpellSuggestions, bool) {
  6441  	return nil, false
  6442  }
  6443  
  6444  // AsTimeZone is the BasicResponseBase implementation for TimeZone.
  6445  func (tz TimeZone) AsTimeZone() (*TimeZone, bool) {
  6446  	return &tz, true
  6447  }
  6448  
  6449  // AsVideoObject is the BasicResponseBase implementation for TimeZone.
  6450  func (tz TimeZone) AsVideoObject() (*VideoObject, bool) {
  6451  	return nil, false
  6452  }
  6453  
  6454  // AsVideos is the BasicResponseBase implementation for TimeZone.
  6455  func (tz TimeZone) AsVideos() (*Videos, bool) {
  6456  	return nil, false
  6457  }
  6458  
  6459  // AsComputation is the BasicResponseBase implementation for TimeZone.
  6460  func (tz TimeZone) AsComputation() (*Computation, bool) {
  6461  	return nil, false
  6462  }
  6463  
  6464  // AsIdentifiable is the BasicResponseBase implementation for TimeZone.
  6465  func (tz TimeZone) AsIdentifiable() (*Identifiable, bool) {
  6466  	return nil, false
  6467  }
  6468  
  6469  // AsBasicIdentifiable is the BasicResponseBase implementation for TimeZone.
  6470  func (tz TimeZone) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  6471  	return &tz, true
  6472  }
  6473  
  6474  // AsSearchResponse is the BasicResponseBase implementation for TimeZone.
  6475  func (tz TimeZone) AsSearchResponse() (*SearchResponse, bool) {
  6476  	return nil, false
  6477  }
  6478  
  6479  // AsResponse is the BasicResponseBase implementation for TimeZone.
  6480  func (tz TimeZone) AsResponse() (*Response, bool) {
  6481  	return nil, false
  6482  }
  6483  
  6484  // AsBasicResponse is the BasicResponseBase implementation for TimeZone.
  6485  func (tz TimeZone) AsBasicResponse() (BasicResponse, bool) {
  6486  	return &tz, true
  6487  }
  6488  
  6489  // AsThing is the BasicResponseBase implementation for TimeZone.
  6490  func (tz TimeZone) AsThing() (*Thing, bool) {
  6491  	return nil, false
  6492  }
  6493  
  6494  // AsBasicThing is the BasicResponseBase implementation for TimeZone.
  6495  func (tz TimeZone) AsBasicThing() (BasicThing, bool) {
  6496  	return nil, false
  6497  }
  6498  
  6499  // AsPlaces is the BasicResponseBase implementation for TimeZone.
  6500  func (tz TimeZone) AsPlaces() (*Places, bool) {
  6501  	return nil, false
  6502  }
  6503  
  6504  // AsSearchResultsAnswer is the BasicResponseBase implementation for TimeZone.
  6505  func (tz TimeZone) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  6506  	return nil, false
  6507  }
  6508  
  6509  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for TimeZone.
  6510  func (tz TimeZone) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  6511  	return &tz, true
  6512  }
  6513  
  6514  // AsAnswer is the BasicResponseBase implementation for TimeZone.
  6515  func (tz TimeZone) AsAnswer() (*Answer, bool) {
  6516  	return nil, false
  6517  }
  6518  
  6519  // AsBasicAnswer is the BasicResponseBase implementation for TimeZone.
  6520  func (tz TimeZone) AsBasicAnswer() (BasicAnswer, bool) {
  6521  	return &tz, true
  6522  }
  6523  
  6524  // AsErrorResponse is the BasicResponseBase implementation for TimeZone.
  6525  func (tz TimeZone) AsErrorResponse() (*ErrorResponse, bool) {
  6526  	return nil, false
  6527  }
  6528  
  6529  // AsCreativeWork is the BasicResponseBase implementation for TimeZone.
  6530  func (tz TimeZone) AsCreativeWork() (*CreativeWork, bool) {
  6531  	return nil, false
  6532  }
  6533  
  6534  // AsBasicCreativeWork is the BasicResponseBase implementation for TimeZone.
  6535  func (tz TimeZone) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  6536  	return nil, false
  6537  }
  6538  
  6539  // AsIntangible is the BasicResponseBase implementation for TimeZone.
  6540  func (tz TimeZone) AsIntangible() (*Intangible, bool) {
  6541  	return nil, false
  6542  }
  6543  
  6544  // AsBasicIntangible is the BasicResponseBase implementation for TimeZone.
  6545  func (tz TimeZone) AsBasicIntangible() (BasicIntangible, bool) {
  6546  	return nil, false
  6547  }
  6548  
  6549  // AsMediaObject is the BasicResponseBase implementation for TimeZone.
  6550  func (tz TimeZone) AsMediaObject() (*MediaObject, bool) {
  6551  	return nil, false
  6552  }
  6553  
  6554  // AsBasicMediaObject is the BasicResponseBase implementation for TimeZone.
  6555  func (tz TimeZone) AsBasicMediaObject() (BasicMediaObject, bool) {
  6556  	return nil, false
  6557  }
  6558  
  6559  // AsArticle is the BasicResponseBase implementation for TimeZone.
  6560  func (tz TimeZone) AsArticle() (*Article, bool) {
  6561  	return nil, false
  6562  }
  6563  
  6564  // AsBasicArticle is the BasicResponseBase implementation for TimeZone.
  6565  func (tz TimeZone) AsBasicArticle() (BasicArticle, bool) {
  6566  	return nil, false
  6567  }
  6568  
  6569  // AsStructuredValue is the BasicResponseBase implementation for TimeZone.
  6570  func (tz TimeZone) AsStructuredValue() (*StructuredValue, bool) {
  6571  	return nil, false
  6572  }
  6573  
  6574  // AsResponseBase is the BasicResponseBase implementation for TimeZone.
  6575  func (tz TimeZone) AsResponseBase() (*ResponseBase, bool) {
  6576  	return nil, false
  6577  }
  6578  
  6579  // AsBasicResponseBase is the BasicResponseBase implementation for TimeZone.
  6580  func (tz TimeZone) AsBasicResponseBase() (BasicResponseBase, bool) {
  6581  	return &tz, true
  6582  }
  6583  
  6584  // TimeZoneTimeZoneInformation defines a date and time for a geographical location.
  6585  type TimeZoneTimeZoneInformation struct {
  6586  	// Location - The name of the geographical location.For example, County; City; City, State; City, State, Country; or Time Zone.
  6587  	Location *string `json:"location,omitempty"`
  6588  	// Time - The data and time specified in the form, YYYY-MM-DDThh;mm:ss.ssssssZ.
  6589  	Time *string `json:"time,omitempty"`
  6590  	// UtcOffset - The offset from UTC. For example, UTC-7.
  6591  	UtcOffset *string `json:"utcOffset,omitempty"`
  6592  }
  6593  
  6594  // VideoObject defines a video object that is relevant to the query.
  6595  type VideoObject struct {
  6596  	// MotionThumbnailURL - READ-ONLY
  6597  	MotionThumbnailURL *string `json:"motionThumbnailUrl,omitempty"`
  6598  	// MotionThumbnailID - READ-ONLY
  6599  	MotionThumbnailID *string `json:"motionThumbnailId,omitempty"`
  6600  	// EmbedHTML - READ-ONLY
  6601  	EmbedHTML *string `json:"embedHtml,omitempty"`
  6602  	// AllowHTTPSEmbed - READ-ONLY
  6603  	AllowHTTPSEmbed *bool `json:"allowHttpsEmbed,omitempty"`
  6604  	// ViewCount - READ-ONLY
  6605  	ViewCount *int32 `json:"viewCount,omitempty"`
  6606  	// Thumbnail - READ-ONLY
  6607  	Thumbnail *ImageObject `json:"thumbnail,omitempty"`
  6608  	// VideoID - READ-ONLY
  6609  	VideoID *string `json:"videoId,omitempty"`
  6610  	// AllowMobileEmbed - READ-ONLY
  6611  	AllowMobileEmbed *bool `json:"allowMobileEmbed,omitempty"`
  6612  	// IsSuperfresh - READ-ONLY
  6613  	IsSuperfresh *bool `json:"isSuperfresh,omitempty"`
  6614  	// ContentURL - READ-ONLY; Original URL to retrieve the source (file) for the media object (e.g the source URL for the image).
  6615  	ContentURL *string `json:"contentUrl,omitempty"`
  6616  	// HostPageURL - READ-ONLY; URL of the page that hosts the media object.
  6617  	HostPageURL *string `json:"hostPageUrl,omitempty"`
  6618  	// Width - READ-ONLY; The width of the source media object, in pixels.
  6619  	Width *int32 `json:"width,omitempty"`
  6620  	// Height - READ-ONLY; The height of the source media object, in pixels.
  6621  	Height *int32 `json:"height,omitempty"`
  6622  	// ThumbnailURL - READ-ONLY; The URL to a thumbnail of the item.
  6623  	ThumbnailURL *string `json:"thumbnailUrl,omitempty"`
  6624  	// Provider - READ-ONLY; The source of the creative work.
  6625  	Provider *[]BasicThing `json:"provider,omitempty"`
  6626  	// Text - READ-ONLY
  6627  	Text *string `json:"text,omitempty"`
  6628  	// Name - READ-ONLY; The name of the thing represented by this object.
  6629  	Name *string `json:"name,omitempty"`
  6630  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
  6631  	URL *string `json:"url,omitempty"`
  6632  	// Image - READ-ONLY
  6633  	Image *ImageObject `json:"image,omitempty"`
  6634  	// Description - READ-ONLY; A short description of the item.
  6635  	Description *string `json:"description,omitempty"`
  6636  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
  6637  	BingID *string `json:"bingId,omitempty"`
  6638  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  6639  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  6640  	// ID - READ-ONLY; A String identifier.
  6641  	ID *string `json:"id,omitempty"`
  6642  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  6643  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  6644  }
  6645  
  6646  // MarshalJSON is the custom marshaler for VideoObject.
  6647  func (vo VideoObject) MarshalJSON() ([]byte, error) {
  6648  	vo.Type = TypeVideoObject
  6649  	objectMap := make(map[string]interface{})
  6650  	if vo.Type != "" {
  6651  		objectMap["_type"] = vo.Type
  6652  	}
  6653  	return json.Marshal(objectMap)
  6654  }
  6655  
  6656  // AsImageObject is the BasicResponseBase implementation for VideoObject.
  6657  func (vo VideoObject) AsImageObject() (*ImageObject, bool) {
  6658  	return nil, false
  6659  }
  6660  
  6661  // AsWebPage is the BasicResponseBase implementation for VideoObject.
  6662  func (vo VideoObject) AsWebPage() (*WebPage, bool) {
  6663  	return nil, false
  6664  }
  6665  
  6666  // AsWebWebAnswer is the BasicResponseBase implementation for VideoObject.
  6667  func (vo VideoObject) AsWebWebAnswer() (*WebWebAnswer, bool) {
  6668  	return nil, false
  6669  }
  6670  
  6671  // AsImages is the BasicResponseBase implementation for VideoObject.
  6672  func (vo VideoObject) AsImages() (*Images, bool) {
  6673  	return nil, false
  6674  }
  6675  
  6676  // AsNewsArticle is the BasicResponseBase implementation for VideoObject.
  6677  func (vo VideoObject) AsNewsArticle() (*NewsArticle, bool) {
  6678  	return nil, false
  6679  }
  6680  
  6681  // AsNews is the BasicResponseBase implementation for VideoObject.
  6682  func (vo VideoObject) AsNews() (*News, bool) {
  6683  	return nil, false
  6684  }
  6685  
  6686  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for VideoObject.
  6687  func (vo VideoObject) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  6688  	return nil, false
  6689  }
  6690  
  6691  // AsSpellSuggestions is the BasicResponseBase implementation for VideoObject.
  6692  func (vo VideoObject) AsSpellSuggestions() (*SpellSuggestions, bool) {
  6693  	return nil, false
  6694  }
  6695  
  6696  // AsTimeZone is the BasicResponseBase implementation for VideoObject.
  6697  func (vo VideoObject) AsTimeZone() (*TimeZone, bool) {
  6698  	return nil, false
  6699  }
  6700  
  6701  // AsVideoObject is the BasicResponseBase implementation for VideoObject.
  6702  func (vo VideoObject) AsVideoObject() (*VideoObject, bool) {
  6703  	return &vo, true
  6704  }
  6705  
  6706  // AsVideos is the BasicResponseBase implementation for VideoObject.
  6707  func (vo VideoObject) AsVideos() (*Videos, bool) {
  6708  	return nil, false
  6709  }
  6710  
  6711  // AsComputation is the BasicResponseBase implementation for VideoObject.
  6712  func (vo VideoObject) AsComputation() (*Computation, bool) {
  6713  	return nil, false
  6714  }
  6715  
  6716  // AsIdentifiable is the BasicResponseBase implementation for VideoObject.
  6717  func (vo VideoObject) AsIdentifiable() (*Identifiable, bool) {
  6718  	return nil, false
  6719  }
  6720  
  6721  // AsBasicIdentifiable is the BasicResponseBase implementation for VideoObject.
  6722  func (vo VideoObject) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  6723  	return &vo, true
  6724  }
  6725  
  6726  // AsSearchResponse is the BasicResponseBase implementation for VideoObject.
  6727  func (vo VideoObject) AsSearchResponse() (*SearchResponse, bool) {
  6728  	return nil, false
  6729  }
  6730  
  6731  // AsResponse is the BasicResponseBase implementation for VideoObject.
  6732  func (vo VideoObject) AsResponse() (*Response, bool) {
  6733  	return nil, false
  6734  }
  6735  
  6736  // AsBasicResponse is the BasicResponseBase implementation for VideoObject.
  6737  func (vo VideoObject) AsBasicResponse() (BasicResponse, bool) {
  6738  	return &vo, true
  6739  }
  6740  
  6741  // AsThing is the BasicResponseBase implementation for VideoObject.
  6742  func (vo VideoObject) AsThing() (*Thing, bool) {
  6743  	return nil, false
  6744  }
  6745  
  6746  // AsBasicThing is the BasicResponseBase implementation for VideoObject.
  6747  func (vo VideoObject) AsBasicThing() (BasicThing, bool) {
  6748  	return &vo, true
  6749  }
  6750  
  6751  // AsPlaces is the BasicResponseBase implementation for VideoObject.
  6752  func (vo VideoObject) AsPlaces() (*Places, bool) {
  6753  	return nil, false
  6754  }
  6755  
  6756  // AsSearchResultsAnswer is the BasicResponseBase implementation for VideoObject.
  6757  func (vo VideoObject) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  6758  	return nil, false
  6759  }
  6760  
  6761  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for VideoObject.
  6762  func (vo VideoObject) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  6763  	return nil, false
  6764  }
  6765  
  6766  // AsAnswer is the BasicResponseBase implementation for VideoObject.
  6767  func (vo VideoObject) AsAnswer() (*Answer, bool) {
  6768  	return nil, false
  6769  }
  6770  
  6771  // AsBasicAnswer is the BasicResponseBase implementation for VideoObject.
  6772  func (vo VideoObject) AsBasicAnswer() (BasicAnswer, bool) {
  6773  	return nil, false
  6774  }
  6775  
  6776  // AsErrorResponse is the BasicResponseBase implementation for VideoObject.
  6777  func (vo VideoObject) AsErrorResponse() (*ErrorResponse, bool) {
  6778  	return nil, false
  6779  }
  6780  
  6781  // AsCreativeWork is the BasicResponseBase implementation for VideoObject.
  6782  func (vo VideoObject) AsCreativeWork() (*CreativeWork, bool) {
  6783  	return nil, false
  6784  }
  6785  
  6786  // AsBasicCreativeWork is the BasicResponseBase implementation for VideoObject.
  6787  func (vo VideoObject) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  6788  	return &vo, true
  6789  }
  6790  
  6791  // AsIntangible is the BasicResponseBase implementation for VideoObject.
  6792  func (vo VideoObject) AsIntangible() (*Intangible, bool) {
  6793  	return nil, false
  6794  }
  6795  
  6796  // AsBasicIntangible is the BasicResponseBase implementation for VideoObject.
  6797  func (vo VideoObject) AsBasicIntangible() (BasicIntangible, bool) {
  6798  	return nil, false
  6799  }
  6800  
  6801  // AsMediaObject is the BasicResponseBase implementation for VideoObject.
  6802  func (vo VideoObject) AsMediaObject() (*MediaObject, bool) {
  6803  	return nil, false
  6804  }
  6805  
  6806  // AsBasicMediaObject is the BasicResponseBase implementation for VideoObject.
  6807  func (vo VideoObject) AsBasicMediaObject() (BasicMediaObject, bool) {
  6808  	return &vo, true
  6809  }
  6810  
  6811  // AsArticle is the BasicResponseBase implementation for VideoObject.
  6812  func (vo VideoObject) AsArticle() (*Article, bool) {
  6813  	return nil, false
  6814  }
  6815  
  6816  // AsBasicArticle is the BasicResponseBase implementation for VideoObject.
  6817  func (vo VideoObject) AsBasicArticle() (BasicArticle, bool) {
  6818  	return nil, false
  6819  }
  6820  
  6821  // AsStructuredValue is the BasicResponseBase implementation for VideoObject.
  6822  func (vo VideoObject) AsStructuredValue() (*StructuredValue, bool) {
  6823  	return nil, false
  6824  }
  6825  
  6826  // AsResponseBase is the BasicResponseBase implementation for VideoObject.
  6827  func (vo VideoObject) AsResponseBase() (*ResponseBase, bool) {
  6828  	return nil, false
  6829  }
  6830  
  6831  // AsBasicResponseBase is the BasicResponseBase implementation for VideoObject.
  6832  func (vo VideoObject) AsBasicResponseBase() (BasicResponseBase, bool) {
  6833  	return &vo, true
  6834  }
  6835  
  6836  // UnmarshalJSON is the custom unmarshaler for VideoObject struct.
  6837  func (vo *VideoObject) UnmarshalJSON(body []byte) error {
  6838  	var m map[string]*json.RawMessage
  6839  	err := json.Unmarshal(body, &m)
  6840  	if err != nil {
  6841  		return err
  6842  	}
  6843  	for k, v := range m {
  6844  		switch k {
  6845  		case "motionThumbnailUrl":
  6846  			if v != nil {
  6847  				var motionThumbnailURL string
  6848  				err = json.Unmarshal(*v, &motionThumbnailURL)
  6849  				if err != nil {
  6850  					return err
  6851  				}
  6852  				vo.MotionThumbnailURL = &motionThumbnailURL
  6853  			}
  6854  		case "motionThumbnailId":
  6855  			if v != nil {
  6856  				var motionThumbnailID string
  6857  				err = json.Unmarshal(*v, &motionThumbnailID)
  6858  				if err != nil {
  6859  					return err
  6860  				}
  6861  				vo.MotionThumbnailID = &motionThumbnailID
  6862  			}
  6863  		case "embedHtml":
  6864  			if v != nil {
  6865  				var embedHTML string
  6866  				err = json.Unmarshal(*v, &embedHTML)
  6867  				if err != nil {
  6868  					return err
  6869  				}
  6870  				vo.EmbedHTML = &embedHTML
  6871  			}
  6872  		case "allowHttpsEmbed":
  6873  			if v != nil {
  6874  				var allowHTTPSEmbed bool
  6875  				err = json.Unmarshal(*v, &allowHTTPSEmbed)
  6876  				if err != nil {
  6877  					return err
  6878  				}
  6879  				vo.AllowHTTPSEmbed = &allowHTTPSEmbed
  6880  			}
  6881  		case "viewCount":
  6882  			if v != nil {
  6883  				var viewCount int32
  6884  				err = json.Unmarshal(*v, &viewCount)
  6885  				if err != nil {
  6886  					return err
  6887  				}
  6888  				vo.ViewCount = &viewCount
  6889  			}
  6890  		case "thumbnail":
  6891  			if v != nil {
  6892  				var thumbnail ImageObject
  6893  				err = json.Unmarshal(*v, &thumbnail)
  6894  				if err != nil {
  6895  					return err
  6896  				}
  6897  				vo.Thumbnail = &thumbnail
  6898  			}
  6899  		case "videoId":
  6900  			if v != nil {
  6901  				var videoID string
  6902  				err = json.Unmarshal(*v, &videoID)
  6903  				if err != nil {
  6904  					return err
  6905  				}
  6906  				vo.VideoID = &videoID
  6907  			}
  6908  		case "allowMobileEmbed":
  6909  			if v != nil {
  6910  				var allowMobileEmbed bool
  6911  				err = json.Unmarshal(*v, &allowMobileEmbed)
  6912  				if err != nil {
  6913  					return err
  6914  				}
  6915  				vo.AllowMobileEmbed = &allowMobileEmbed
  6916  			}
  6917  		case "isSuperfresh":
  6918  			if v != nil {
  6919  				var isSuperfresh bool
  6920  				err = json.Unmarshal(*v, &isSuperfresh)
  6921  				if err != nil {
  6922  					return err
  6923  				}
  6924  				vo.IsSuperfresh = &isSuperfresh
  6925  			}
  6926  		case "contentUrl":
  6927  			if v != nil {
  6928  				var contentURL string
  6929  				err = json.Unmarshal(*v, &contentURL)
  6930  				if err != nil {
  6931  					return err
  6932  				}
  6933  				vo.ContentURL = &contentURL
  6934  			}
  6935  		case "hostPageUrl":
  6936  			if v != nil {
  6937  				var hostPageURL string
  6938  				err = json.Unmarshal(*v, &hostPageURL)
  6939  				if err != nil {
  6940  					return err
  6941  				}
  6942  				vo.HostPageURL = &hostPageURL
  6943  			}
  6944  		case "width":
  6945  			if v != nil {
  6946  				var width int32
  6947  				err = json.Unmarshal(*v, &width)
  6948  				if err != nil {
  6949  					return err
  6950  				}
  6951  				vo.Width = &width
  6952  			}
  6953  		case "height":
  6954  			if v != nil {
  6955  				var height int32
  6956  				err = json.Unmarshal(*v, &height)
  6957  				if err != nil {
  6958  					return err
  6959  				}
  6960  				vo.Height = &height
  6961  			}
  6962  		case "thumbnailUrl":
  6963  			if v != nil {
  6964  				var thumbnailURL string
  6965  				err = json.Unmarshal(*v, &thumbnailURL)
  6966  				if err != nil {
  6967  					return err
  6968  				}
  6969  				vo.ThumbnailURL = &thumbnailURL
  6970  			}
  6971  		case "provider":
  6972  			if v != nil {
  6973  				provider, err := unmarshalBasicThingArray(*v)
  6974  				if err != nil {
  6975  					return err
  6976  				}
  6977  				vo.Provider = &provider
  6978  			}
  6979  		case "text":
  6980  			if v != nil {
  6981  				var textVar string
  6982  				err = json.Unmarshal(*v, &textVar)
  6983  				if err != nil {
  6984  					return err
  6985  				}
  6986  				vo.Text = &textVar
  6987  			}
  6988  		case "name":
  6989  			if v != nil {
  6990  				var name string
  6991  				err = json.Unmarshal(*v, &name)
  6992  				if err != nil {
  6993  					return err
  6994  				}
  6995  				vo.Name = &name
  6996  			}
  6997  		case "url":
  6998  			if v != nil {
  6999  				var URL string
  7000  				err = json.Unmarshal(*v, &URL)
  7001  				if err != nil {
  7002  					return err
  7003  				}
  7004  				vo.URL = &URL
  7005  			}
  7006  		case "image":
  7007  			if v != nil {
  7008  				var imageVar ImageObject
  7009  				err = json.Unmarshal(*v, &imageVar)
  7010  				if err != nil {
  7011  					return err
  7012  				}
  7013  				vo.Image = &imageVar
  7014  			}
  7015  		case "description":
  7016  			if v != nil {
  7017  				var description string
  7018  				err = json.Unmarshal(*v, &description)
  7019  				if err != nil {
  7020  					return err
  7021  				}
  7022  				vo.Description = &description
  7023  			}
  7024  		case "bingId":
  7025  			if v != nil {
  7026  				var bingID string
  7027  				err = json.Unmarshal(*v, &bingID)
  7028  				if err != nil {
  7029  					return err
  7030  				}
  7031  				vo.BingID = &bingID
  7032  			}
  7033  		case "webSearchUrl":
  7034  			if v != nil {
  7035  				var webSearchURL string
  7036  				err = json.Unmarshal(*v, &webSearchURL)
  7037  				if err != nil {
  7038  					return err
  7039  				}
  7040  				vo.WebSearchURL = &webSearchURL
  7041  			}
  7042  		case "id":
  7043  			if v != nil {
  7044  				var ID string
  7045  				err = json.Unmarshal(*v, &ID)
  7046  				if err != nil {
  7047  					return err
  7048  				}
  7049  				vo.ID = &ID
  7050  			}
  7051  		case "_type":
  7052  			if v != nil {
  7053  				var typeVar TypeBasicResponseBase
  7054  				err = json.Unmarshal(*v, &typeVar)
  7055  				if err != nil {
  7056  					return err
  7057  				}
  7058  				vo.Type = typeVar
  7059  			}
  7060  		}
  7061  	}
  7062  
  7063  	return nil
  7064  }
  7065  
  7066  // Videos defines a video answer.
  7067  type Videos struct {
  7068  	// Value - A list of video objects that are relevant to the query.
  7069  	Value *[]VideoObject `json:"value,omitempty"`
  7070  	// NextOffset - READ-ONLY
  7071  	NextOffset *int32 `json:"nextOffset,omitempty"`
  7072  	// QueryExpansions - READ-ONLY
  7073  	QueryExpansions *[]Query `json:"queryExpansions,omitempty"`
  7074  	// RelatedSearches - READ-ONLY
  7075  	RelatedSearches *[]Query `json:"relatedSearches,omitempty"`
  7076  	// QueryContext - READ-ONLY
  7077  	QueryContext *QueryContext `json:"queryContext,omitempty"`
  7078  	// TotalEstimatedMatches - READ-ONLY; 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.
  7079  	TotalEstimatedMatches *int64 `json:"totalEstimatedMatches,omitempty"`
  7080  	// IsFamilyFriendly - READ-ONLY
  7081  	IsFamilyFriendly *bool `json:"isFamilyFriendly,omitempty"`
  7082  	// FollowUpQueries - READ-ONLY
  7083  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
  7084  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  7085  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  7086  	// ID - READ-ONLY; A String identifier.
  7087  	ID *string `json:"id,omitempty"`
  7088  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  7089  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  7090  }
  7091  
  7092  // MarshalJSON is the custom marshaler for Videos.
  7093  func (vVar Videos) MarshalJSON() ([]byte, error) {
  7094  	vVar.Type = TypeVideos
  7095  	objectMap := make(map[string]interface{})
  7096  	if vVar.Value != nil {
  7097  		objectMap["value"] = vVar.Value
  7098  	}
  7099  	if vVar.Type != "" {
  7100  		objectMap["_type"] = vVar.Type
  7101  	}
  7102  	return json.Marshal(objectMap)
  7103  }
  7104  
  7105  // AsImageObject is the BasicResponseBase implementation for Videos.
  7106  func (vVar Videos) AsImageObject() (*ImageObject, bool) {
  7107  	return nil, false
  7108  }
  7109  
  7110  // AsWebPage is the BasicResponseBase implementation for Videos.
  7111  func (vVar Videos) AsWebPage() (*WebPage, bool) {
  7112  	return nil, false
  7113  }
  7114  
  7115  // AsWebWebAnswer is the BasicResponseBase implementation for Videos.
  7116  func (vVar Videos) AsWebWebAnswer() (*WebWebAnswer, bool) {
  7117  	return nil, false
  7118  }
  7119  
  7120  // AsImages is the BasicResponseBase implementation for Videos.
  7121  func (vVar Videos) AsImages() (*Images, bool) {
  7122  	return nil, false
  7123  }
  7124  
  7125  // AsNewsArticle is the BasicResponseBase implementation for Videos.
  7126  func (vVar Videos) AsNewsArticle() (*NewsArticle, bool) {
  7127  	return nil, false
  7128  }
  7129  
  7130  // AsNews is the BasicResponseBase implementation for Videos.
  7131  func (vVar Videos) AsNews() (*News, bool) {
  7132  	return nil, false
  7133  }
  7134  
  7135  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for Videos.
  7136  func (vVar Videos) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  7137  	return nil, false
  7138  }
  7139  
  7140  // AsSpellSuggestions is the BasicResponseBase implementation for Videos.
  7141  func (vVar Videos) AsSpellSuggestions() (*SpellSuggestions, bool) {
  7142  	return nil, false
  7143  }
  7144  
  7145  // AsTimeZone is the BasicResponseBase implementation for Videos.
  7146  func (vVar Videos) AsTimeZone() (*TimeZone, bool) {
  7147  	return nil, false
  7148  }
  7149  
  7150  // AsVideoObject is the BasicResponseBase implementation for Videos.
  7151  func (vVar Videos) AsVideoObject() (*VideoObject, bool) {
  7152  	return nil, false
  7153  }
  7154  
  7155  // AsVideos is the BasicResponseBase implementation for Videos.
  7156  func (vVar Videos) AsVideos() (*Videos, bool) {
  7157  	return &vVar, true
  7158  }
  7159  
  7160  // AsComputation is the BasicResponseBase implementation for Videos.
  7161  func (vVar Videos) AsComputation() (*Computation, bool) {
  7162  	return nil, false
  7163  }
  7164  
  7165  // AsIdentifiable is the BasicResponseBase implementation for Videos.
  7166  func (vVar Videos) AsIdentifiable() (*Identifiable, bool) {
  7167  	return nil, false
  7168  }
  7169  
  7170  // AsBasicIdentifiable is the BasicResponseBase implementation for Videos.
  7171  func (vVar Videos) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  7172  	return &vVar, true
  7173  }
  7174  
  7175  // AsSearchResponse is the BasicResponseBase implementation for Videos.
  7176  func (vVar Videos) AsSearchResponse() (*SearchResponse, bool) {
  7177  	return nil, false
  7178  }
  7179  
  7180  // AsResponse is the BasicResponseBase implementation for Videos.
  7181  func (vVar Videos) AsResponse() (*Response, bool) {
  7182  	return nil, false
  7183  }
  7184  
  7185  // AsBasicResponse is the BasicResponseBase implementation for Videos.
  7186  func (vVar Videos) AsBasicResponse() (BasicResponse, bool) {
  7187  	return &vVar, true
  7188  }
  7189  
  7190  // AsThing is the BasicResponseBase implementation for Videos.
  7191  func (vVar Videos) AsThing() (*Thing, bool) {
  7192  	return nil, false
  7193  }
  7194  
  7195  // AsBasicThing is the BasicResponseBase implementation for Videos.
  7196  func (vVar Videos) AsBasicThing() (BasicThing, bool) {
  7197  	return nil, false
  7198  }
  7199  
  7200  // AsPlaces is the BasicResponseBase implementation for Videos.
  7201  func (vVar Videos) AsPlaces() (*Places, bool) {
  7202  	return nil, false
  7203  }
  7204  
  7205  // AsSearchResultsAnswer is the BasicResponseBase implementation for Videos.
  7206  func (vVar Videos) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  7207  	return nil, false
  7208  }
  7209  
  7210  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Videos.
  7211  func (vVar Videos) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  7212  	return &vVar, true
  7213  }
  7214  
  7215  // AsAnswer is the BasicResponseBase implementation for Videos.
  7216  func (vVar Videos) AsAnswer() (*Answer, bool) {
  7217  	return nil, false
  7218  }
  7219  
  7220  // AsBasicAnswer is the BasicResponseBase implementation for Videos.
  7221  func (vVar Videos) AsBasicAnswer() (BasicAnswer, bool) {
  7222  	return &vVar, true
  7223  }
  7224  
  7225  // AsErrorResponse is the BasicResponseBase implementation for Videos.
  7226  func (vVar Videos) AsErrorResponse() (*ErrorResponse, bool) {
  7227  	return nil, false
  7228  }
  7229  
  7230  // AsCreativeWork is the BasicResponseBase implementation for Videos.
  7231  func (vVar Videos) AsCreativeWork() (*CreativeWork, bool) {
  7232  	return nil, false
  7233  }
  7234  
  7235  // AsBasicCreativeWork is the BasicResponseBase implementation for Videos.
  7236  func (vVar Videos) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  7237  	return nil, false
  7238  }
  7239  
  7240  // AsIntangible is the BasicResponseBase implementation for Videos.
  7241  func (vVar Videos) AsIntangible() (*Intangible, bool) {
  7242  	return nil, false
  7243  }
  7244  
  7245  // AsBasicIntangible is the BasicResponseBase implementation for Videos.
  7246  func (vVar Videos) AsBasicIntangible() (BasicIntangible, bool) {
  7247  	return nil, false
  7248  }
  7249  
  7250  // AsMediaObject is the BasicResponseBase implementation for Videos.
  7251  func (vVar Videos) AsMediaObject() (*MediaObject, bool) {
  7252  	return nil, false
  7253  }
  7254  
  7255  // AsBasicMediaObject is the BasicResponseBase implementation for Videos.
  7256  func (vVar Videos) AsBasicMediaObject() (BasicMediaObject, bool) {
  7257  	return nil, false
  7258  }
  7259  
  7260  // AsArticle is the BasicResponseBase implementation for Videos.
  7261  func (vVar Videos) AsArticle() (*Article, bool) {
  7262  	return nil, false
  7263  }
  7264  
  7265  // AsBasicArticle is the BasicResponseBase implementation for Videos.
  7266  func (vVar Videos) AsBasicArticle() (BasicArticle, bool) {
  7267  	return nil, false
  7268  }
  7269  
  7270  // AsStructuredValue is the BasicResponseBase implementation for Videos.
  7271  func (vVar Videos) AsStructuredValue() (*StructuredValue, bool) {
  7272  	return nil, false
  7273  }
  7274  
  7275  // AsResponseBase is the BasicResponseBase implementation for Videos.
  7276  func (vVar Videos) AsResponseBase() (*ResponseBase, bool) {
  7277  	return nil, false
  7278  }
  7279  
  7280  // AsBasicResponseBase is the BasicResponseBase implementation for Videos.
  7281  func (vVar Videos) AsBasicResponseBase() (BasicResponseBase, bool) {
  7282  	return &vVar, true
  7283  }
  7284  
  7285  // WebMetaTag defines a webpage's metadata.
  7286  type WebMetaTag struct {
  7287  	// Name - READ-ONLY; The metadata.
  7288  	Name *string `json:"name,omitempty"`
  7289  	// Content - READ-ONLY; The name of the metadata.
  7290  	Content *string `json:"content,omitempty"`
  7291  }
  7292  
  7293  // MarshalJSON is the custom marshaler for WebMetaTag.
  7294  func (wmt WebMetaTag) MarshalJSON() ([]byte, error) {
  7295  	objectMap := make(map[string]interface{})
  7296  	return json.Marshal(objectMap)
  7297  }
  7298  
  7299  // WebPage defines a webpage that is relevant to the query.
  7300  type WebPage struct {
  7301  	// DisplayURL - READ-ONLY; The display URL of the webpage. The URL is meant for display purposes only and is not well formed.
  7302  	DisplayURL *string `json:"displayUrl,omitempty"`
  7303  	// Snippet - READ-ONLY; A snippet of text from the webpage that describes its contents.
  7304  	Snippet *string `json:"snippet,omitempty"`
  7305  	// DeepLinks - READ-ONLY; A list of links to related content that Bing found in the website that contains this webpage. The Webpage object in this context includes only the name, url, urlPingSuffix, and snippet fields.
  7306  	DeepLinks *[]WebPage `json:"deepLinks,omitempty"`
  7307  	// DateLastCrawled - READ-ONLY; The last time that Bing crawled the webpage. The date is in the form, YYYY-MM-DDTHH:MM:SS. For example, 2015-04-13T05:23:39.
  7308  	DateLastCrawled *string `json:"dateLastCrawled,omitempty"`
  7309  	// SearchTags - READ-ONLY; A list of search tags that the webpage owner specified on the webpage. The API returns only indexed search tags. The name field of the MetaTag object contains the indexed search tag. Search tags begin with search.* (for example, search.assetId). The content field contains the tag's value.
  7310  	SearchTags *[]WebMetaTag `json:"searchTags,omitempty"`
  7311  	// PrimaryImageOfPage - READ-ONLY
  7312  	PrimaryImageOfPage *ImageObject `json:"primaryImageOfPage,omitempty"`
  7313  	// ThumbnailURL - READ-ONLY; The URL to a thumbnail of the item.
  7314  	ThumbnailURL *string `json:"thumbnailUrl,omitempty"`
  7315  	// Provider - READ-ONLY; The source of the creative work.
  7316  	Provider *[]BasicThing `json:"provider,omitempty"`
  7317  	// Text - READ-ONLY
  7318  	Text *string `json:"text,omitempty"`
  7319  	// Name - READ-ONLY; The name of the thing represented by this object.
  7320  	Name *string `json:"name,omitempty"`
  7321  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
  7322  	URL *string `json:"url,omitempty"`
  7323  	// Image - READ-ONLY
  7324  	Image *ImageObject `json:"image,omitempty"`
  7325  	// Description - READ-ONLY; A short description of the item.
  7326  	Description *string `json:"description,omitempty"`
  7327  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
  7328  	BingID *string `json:"bingId,omitempty"`
  7329  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  7330  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  7331  	// ID - READ-ONLY; A String identifier.
  7332  	ID *string `json:"id,omitempty"`
  7333  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  7334  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  7335  }
  7336  
  7337  // MarshalJSON is the custom marshaler for WebPage.
  7338  func (wp WebPage) MarshalJSON() ([]byte, error) {
  7339  	wp.Type = TypeWebPage
  7340  	objectMap := make(map[string]interface{})
  7341  	if wp.Type != "" {
  7342  		objectMap["_type"] = wp.Type
  7343  	}
  7344  	return json.Marshal(objectMap)
  7345  }
  7346  
  7347  // AsImageObject is the BasicResponseBase implementation for WebPage.
  7348  func (wp WebPage) AsImageObject() (*ImageObject, bool) {
  7349  	return nil, false
  7350  }
  7351  
  7352  // AsWebPage is the BasicResponseBase implementation for WebPage.
  7353  func (wp WebPage) AsWebPage() (*WebPage, bool) {
  7354  	return &wp, true
  7355  }
  7356  
  7357  // AsWebWebAnswer is the BasicResponseBase implementation for WebPage.
  7358  func (wp WebPage) AsWebWebAnswer() (*WebWebAnswer, bool) {
  7359  	return nil, false
  7360  }
  7361  
  7362  // AsImages is the BasicResponseBase implementation for WebPage.
  7363  func (wp WebPage) AsImages() (*Images, bool) {
  7364  	return nil, false
  7365  }
  7366  
  7367  // AsNewsArticle is the BasicResponseBase implementation for WebPage.
  7368  func (wp WebPage) AsNewsArticle() (*NewsArticle, bool) {
  7369  	return nil, false
  7370  }
  7371  
  7372  // AsNews is the BasicResponseBase implementation for WebPage.
  7373  func (wp WebPage) AsNews() (*News, bool) {
  7374  	return nil, false
  7375  }
  7376  
  7377  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for WebPage.
  7378  func (wp WebPage) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  7379  	return nil, false
  7380  }
  7381  
  7382  // AsSpellSuggestions is the BasicResponseBase implementation for WebPage.
  7383  func (wp WebPage) AsSpellSuggestions() (*SpellSuggestions, bool) {
  7384  	return nil, false
  7385  }
  7386  
  7387  // AsTimeZone is the BasicResponseBase implementation for WebPage.
  7388  func (wp WebPage) AsTimeZone() (*TimeZone, bool) {
  7389  	return nil, false
  7390  }
  7391  
  7392  // AsVideoObject is the BasicResponseBase implementation for WebPage.
  7393  func (wp WebPage) AsVideoObject() (*VideoObject, bool) {
  7394  	return nil, false
  7395  }
  7396  
  7397  // AsVideos is the BasicResponseBase implementation for WebPage.
  7398  func (wp WebPage) AsVideos() (*Videos, bool) {
  7399  	return nil, false
  7400  }
  7401  
  7402  // AsComputation is the BasicResponseBase implementation for WebPage.
  7403  func (wp WebPage) AsComputation() (*Computation, bool) {
  7404  	return nil, false
  7405  }
  7406  
  7407  // AsIdentifiable is the BasicResponseBase implementation for WebPage.
  7408  func (wp WebPage) AsIdentifiable() (*Identifiable, bool) {
  7409  	return nil, false
  7410  }
  7411  
  7412  // AsBasicIdentifiable is the BasicResponseBase implementation for WebPage.
  7413  func (wp WebPage) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  7414  	return &wp, true
  7415  }
  7416  
  7417  // AsSearchResponse is the BasicResponseBase implementation for WebPage.
  7418  func (wp WebPage) AsSearchResponse() (*SearchResponse, bool) {
  7419  	return nil, false
  7420  }
  7421  
  7422  // AsResponse is the BasicResponseBase implementation for WebPage.
  7423  func (wp WebPage) AsResponse() (*Response, bool) {
  7424  	return nil, false
  7425  }
  7426  
  7427  // AsBasicResponse is the BasicResponseBase implementation for WebPage.
  7428  func (wp WebPage) AsBasicResponse() (BasicResponse, bool) {
  7429  	return &wp, true
  7430  }
  7431  
  7432  // AsThing is the BasicResponseBase implementation for WebPage.
  7433  func (wp WebPage) AsThing() (*Thing, bool) {
  7434  	return nil, false
  7435  }
  7436  
  7437  // AsBasicThing is the BasicResponseBase implementation for WebPage.
  7438  func (wp WebPage) AsBasicThing() (BasicThing, bool) {
  7439  	return &wp, true
  7440  }
  7441  
  7442  // AsPlaces is the BasicResponseBase implementation for WebPage.
  7443  func (wp WebPage) AsPlaces() (*Places, bool) {
  7444  	return nil, false
  7445  }
  7446  
  7447  // AsSearchResultsAnswer is the BasicResponseBase implementation for WebPage.
  7448  func (wp WebPage) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  7449  	return nil, false
  7450  }
  7451  
  7452  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for WebPage.
  7453  func (wp WebPage) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  7454  	return nil, false
  7455  }
  7456  
  7457  // AsAnswer is the BasicResponseBase implementation for WebPage.
  7458  func (wp WebPage) AsAnswer() (*Answer, bool) {
  7459  	return nil, false
  7460  }
  7461  
  7462  // AsBasicAnswer is the BasicResponseBase implementation for WebPage.
  7463  func (wp WebPage) AsBasicAnswer() (BasicAnswer, bool) {
  7464  	return nil, false
  7465  }
  7466  
  7467  // AsErrorResponse is the BasicResponseBase implementation for WebPage.
  7468  func (wp WebPage) AsErrorResponse() (*ErrorResponse, bool) {
  7469  	return nil, false
  7470  }
  7471  
  7472  // AsCreativeWork is the BasicResponseBase implementation for WebPage.
  7473  func (wp WebPage) AsCreativeWork() (*CreativeWork, bool) {
  7474  	return nil, false
  7475  }
  7476  
  7477  // AsBasicCreativeWork is the BasicResponseBase implementation for WebPage.
  7478  func (wp WebPage) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  7479  	return &wp, true
  7480  }
  7481  
  7482  // AsIntangible is the BasicResponseBase implementation for WebPage.
  7483  func (wp WebPage) AsIntangible() (*Intangible, bool) {
  7484  	return nil, false
  7485  }
  7486  
  7487  // AsBasicIntangible is the BasicResponseBase implementation for WebPage.
  7488  func (wp WebPage) AsBasicIntangible() (BasicIntangible, bool) {
  7489  	return nil, false
  7490  }
  7491  
  7492  // AsMediaObject is the BasicResponseBase implementation for WebPage.
  7493  func (wp WebPage) AsMediaObject() (*MediaObject, bool) {
  7494  	return nil, false
  7495  }
  7496  
  7497  // AsBasicMediaObject is the BasicResponseBase implementation for WebPage.
  7498  func (wp WebPage) AsBasicMediaObject() (BasicMediaObject, bool) {
  7499  	return nil, false
  7500  }
  7501  
  7502  // AsArticle is the BasicResponseBase implementation for WebPage.
  7503  func (wp WebPage) AsArticle() (*Article, bool) {
  7504  	return nil, false
  7505  }
  7506  
  7507  // AsBasicArticle is the BasicResponseBase implementation for WebPage.
  7508  func (wp WebPage) AsBasicArticle() (BasicArticle, bool) {
  7509  	return nil, false
  7510  }
  7511  
  7512  // AsStructuredValue is the BasicResponseBase implementation for WebPage.
  7513  func (wp WebPage) AsStructuredValue() (*StructuredValue, bool) {
  7514  	return nil, false
  7515  }
  7516  
  7517  // AsResponseBase is the BasicResponseBase implementation for WebPage.
  7518  func (wp WebPage) AsResponseBase() (*ResponseBase, bool) {
  7519  	return nil, false
  7520  }
  7521  
  7522  // AsBasicResponseBase is the BasicResponseBase implementation for WebPage.
  7523  func (wp WebPage) AsBasicResponseBase() (BasicResponseBase, bool) {
  7524  	return &wp, true
  7525  }
  7526  
  7527  // UnmarshalJSON is the custom unmarshaler for WebPage struct.
  7528  func (wp *WebPage) UnmarshalJSON(body []byte) error {
  7529  	var m map[string]*json.RawMessage
  7530  	err := json.Unmarshal(body, &m)
  7531  	if err != nil {
  7532  		return err
  7533  	}
  7534  	for k, v := range m {
  7535  		switch k {
  7536  		case "displayUrl":
  7537  			if v != nil {
  7538  				var displayURL string
  7539  				err = json.Unmarshal(*v, &displayURL)
  7540  				if err != nil {
  7541  					return err
  7542  				}
  7543  				wp.DisplayURL = &displayURL
  7544  			}
  7545  		case "snippet":
  7546  			if v != nil {
  7547  				var snippet string
  7548  				err = json.Unmarshal(*v, &snippet)
  7549  				if err != nil {
  7550  					return err
  7551  				}
  7552  				wp.Snippet = &snippet
  7553  			}
  7554  		case "deepLinks":
  7555  			if v != nil {
  7556  				var deepLinks []WebPage
  7557  				err = json.Unmarshal(*v, &deepLinks)
  7558  				if err != nil {
  7559  					return err
  7560  				}
  7561  				wp.DeepLinks = &deepLinks
  7562  			}
  7563  		case "dateLastCrawled":
  7564  			if v != nil {
  7565  				var dateLastCrawled string
  7566  				err = json.Unmarshal(*v, &dateLastCrawled)
  7567  				if err != nil {
  7568  					return err
  7569  				}
  7570  				wp.DateLastCrawled = &dateLastCrawled
  7571  			}
  7572  		case "searchTags":
  7573  			if v != nil {
  7574  				var searchTags []WebMetaTag
  7575  				err = json.Unmarshal(*v, &searchTags)
  7576  				if err != nil {
  7577  					return err
  7578  				}
  7579  				wp.SearchTags = &searchTags
  7580  			}
  7581  		case "primaryImageOfPage":
  7582  			if v != nil {
  7583  				var primaryImageOfPage ImageObject
  7584  				err = json.Unmarshal(*v, &primaryImageOfPage)
  7585  				if err != nil {
  7586  					return err
  7587  				}
  7588  				wp.PrimaryImageOfPage = &primaryImageOfPage
  7589  			}
  7590  		case "thumbnailUrl":
  7591  			if v != nil {
  7592  				var thumbnailURL string
  7593  				err = json.Unmarshal(*v, &thumbnailURL)
  7594  				if err != nil {
  7595  					return err
  7596  				}
  7597  				wp.ThumbnailURL = &thumbnailURL
  7598  			}
  7599  		case "provider":
  7600  			if v != nil {
  7601  				provider, err := unmarshalBasicThingArray(*v)
  7602  				if err != nil {
  7603  					return err
  7604  				}
  7605  				wp.Provider = &provider
  7606  			}
  7607  		case "text":
  7608  			if v != nil {
  7609  				var textVar string
  7610  				err = json.Unmarshal(*v, &textVar)
  7611  				if err != nil {
  7612  					return err
  7613  				}
  7614  				wp.Text = &textVar
  7615  			}
  7616  		case "name":
  7617  			if v != nil {
  7618  				var name string
  7619  				err = json.Unmarshal(*v, &name)
  7620  				if err != nil {
  7621  					return err
  7622  				}
  7623  				wp.Name = &name
  7624  			}
  7625  		case "url":
  7626  			if v != nil {
  7627  				var URL string
  7628  				err = json.Unmarshal(*v, &URL)
  7629  				if err != nil {
  7630  					return err
  7631  				}
  7632  				wp.URL = &URL
  7633  			}
  7634  		case "image":
  7635  			if v != nil {
  7636  				var imageVar ImageObject
  7637  				err = json.Unmarshal(*v, &imageVar)
  7638  				if err != nil {
  7639  					return err
  7640  				}
  7641  				wp.Image = &imageVar
  7642  			}
  7643  		case "description":
  7644  			if v != nil {
  7645  				var description string
  7646  				err = json.Unmarshal(*v, &description)
  7647  				if err != nil {
  7648  					return err
  7649  				}
  7650  				wp.Description = &description
  7651  			}
  7652  		case "bingId":
  7653  			if v != nil {
  7654  				var bingID string
  7655  				err = json.Unmarshal(*v, &bingID)
  7656  				if err != nil {
  7657  					return err
  7658  				}
  7659  				wp.BingID = &bingID
  7660  			}
  7661  		case "webSearchUrl":
  7662  			if v != nil {
  7663  				var webSearchURL string
  7664  				err = json.Unmarshal(*v, &webSearchURL)
  7665  				if err != nil {
  7666  					return err
  7667  				}
  7668  				wp.WebSearchURL = &webSearchURL
  7669  			}
  7670  		case "id":
  7671  			if v != nil {
  7672  				var ID string
  7673  				err = json.Unmarshal(*v, &ID)
  7674  				if err != nil {
  7675  					return err
  7676  				}
  7677  				wp.ID = &ID
  7678  			}
  7679  		case "_type":
  7680  			if v != nil {
  7681  				var typeVar TypeBasicResponseBase
  7682  				err = json.Unmarshal(*v, &typeVar)
  7683  				if err != nil {
  7684  					return err
  7685  				}
  7686  				wp.Type = typeVar
  7687  			}
  7688  		}
  7689  	}
  7690  
  7691  	return nil
  7692  }
  7693  
  7694  // WebWebAnswer defines a list of relevant webpage links.
  7695  type WebWebAnswer struct {
  7696  	// Value - A list of webpages that are relevant to the query.
  7697  	Value *[]WebPage `json:"value,omitempty"`
  7698  	// SomeResultsRemoved - READ-ONLY; A Boolean value that indicates whether the response excluded some results from the answer. If Bing excluded some results, the value is true.
  7699  	SomeResultsRemoved *bool `json:"someResultsRemoved,omitempty"`
  7700  	// QueryContext - READ-ONLY
  7701  	QueryContext *QueryContext `json:"queryContext,omitempty"`
  7702  	// TotalEstimatedMatches - READ-ONLY; 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.
  7703  	TotalEstimatedMatches *int64 `json:"totalEstimatedMatches,omitempty"`
  7704  	// IsFamilyFriendly - READ-ONLY
  7705  	IsFamilyFriendly *bool `json:"isFamilyFriendly,omitempty"`
  7706  	// FollowUpQueries - READ-ONLY
  7707  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
  7708  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  7709  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  7710  	// ID - READ-ONLY; A String identifier.
  7711  	ID *string `json:"id,omitempty"`
  7712  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeWebPage', 'TypeWebWebAnswer', 'TypeImages', 'TypeNewsArticle', 'TypeNews', 'TypeRelatedSearchesRelatedSearchAnswer', 'TypeSpellSuggestions', 'TypeTimeZone', 'TypeVideoObject', 'TypeVideos', 'TypeComputation', 'TypeIdentifiable', 'TypeSearchResponse', 'TypeResponse', 'TypeThing', 'TypePlaces', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeErrorResponse', 'TypeCreativeWork', 'TypeIntangible', 'TypeMediaObject', 'TypeArticle', 'TypeStructuredValue'
  7713  	Type TypeBasicResponseBase `json:"_type,omitempty"`
  7714  }
  7715  
  7716  // MarshalJSON is the custom marshaler for WebWebAnswer.
  7717  func (wwa WebWebAnswer) MarshalJSON() ([]byte, error) {
  7718  	wwa.Type = TypeWebWebAnswer
  7719  	objectMap := make(map[string]interface{})
  7720  	if wwa.Value != nil {
  7721  		objectMap["value"] = wwa.Value
  7722  	}
  7723  	if wwa.Type != "" {
  7724  		objectMap["_type"] = wwa.Type
  7725  	}
  7726  	return json.Marshal(objectMap)
  7727  }
  7728  
  7729  // AsImageObject is the BasicResponseBase implementation for WebWebAnswer.
  7730  func (wwa WebWebAnswer) AsImageObject() (*ImageObject, bool) {
  7731  	return nil, false
  7732  }
  7733  
  7734  // AsWebPage is the BasicResponseBase implementation for WebWebAnswer.
  7735  func (wwa WebWebAnswer) AsWebPage() (*WebPage, bool) {
  7736  	return nil, false
  7737  }
  7738  
  7739  // AsWebWebAnswer is the BasicResponseBase implementation for WebWebAnswer.
  7740  func (wwa WebWebAnswer) AsWebWebAnswer() (*WebWebAnswer, bool) {
  7741  	return &wwa, true
  7742  }
  7743  
  7744  // AsImages is the BasicResponseBase implementation for WebWebAnswer.
  7745  func (wwa WebWebAnswer) AsImages() (*Images, bool) {
  7746  	return nil, false
  7747  }
  7748  
  7749  // AsNewsArticle is the BasicResponseBase implementation for WebWebAnswer.
  7750  func (wwa WebWebAnswer) AsNewsArticle() (*NewsArticle, bool) {
  7751  	return nil, false
  7752  }
  7753  
  7754  // AsNews is the BasicResponseBase implementation for WebWebAnswer.
  7755  func (wwa WebWebAnswer) AsNews() (*News, bool) {
  7756  	return nil, false
  7757  }
  7758  
  7759  // AsRelatedSearchesRelatedSearchAnswer is the BasicResponseBase implementation for WebWebAnswer.
  7760  func (wwa WebWebAnswer) AsRelatedSearchesRelatedSearchAnswer() (*RelatedSearchesRelatedSearchAnswer, bool) {
  7761  	return nil, false
  7762  }
  7763  
  7764  // AsSpellSuggestions is the BasicResponseBase implementation for WebWebAnswer.
  7765  func (wwa WebWebAnswer) AsSpellSuggestions() (*SpellSuggestions, bool) {
  7766  	return nil, false
  7767  }
  7768  
  7769  // AsTimeZone is the BasicResponseBase implementation for WebWebAnswer.
  7770  func (wwa WebWebAnswer) AsTimeZone() (*TimeZone, bool) {
  7771  	return nil, false
  7772  }
  7773  
  7774  // AsVideoObject is the BasicResponseBase implementation for WebWebAnswer.
  7775  func (wwa WebWebAnswer) AsVideoObject() (*VideoObject, bool) {
  7776  	return nil, false
  7777  }
  7778  
  7779  // AsVideos is the BasicResponseBase implementation for WebWebAnswer.
  7780  func (wwa WebWebAnswer) AsVideos() (*Videos, bool) {
  7781  	return nil, false
  7782  }
  7783  
  7784  // AsComputation is the BasicResponseBase implementation for WebWebAnswer.
  7785  func (wwa WebWebAnswer) AsComputation() (*Computation, bool) {
  7786  	return nil, false
  7787  }
  7788  
  7789  // AsIdentifiable is the BasicResponseBase implementation for WebWebAnswer.
  7790  func (wwa WebWebAnswer) AsIdentifiable() (*Identifiable, bool) {
  7791  	return nil, false
  7792  }
  7793  
  7794  // AsBasicIdentifiable is the BasicResponseBase implementation for WebWebAnswer.
  7795  func (wwa WebWebAnswer) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  7796  	return &wwa, true
  7797  }
  7798  
  7799  // AsSearchResponse is the BasicResponseBase implementation for WebWebAnswer.
  7800  func (wwa WebWebAnswer) AsSearchResponse() (*SearchResponse, bool) {
  7801  	return nil, false
  7802  }
  7803  
  7804  // AsResponse is the BasicResponseBase implementation for WebWebAnswer.
  7805  func (wwa WebWebAnswer) AsResponse() (*Response, bool) {
  7806  	return nil, false
  7807  }
  7808  
  7809  // AsBasicResponse is the BasicResponseBase implementation for WebWebAnswer.
  7810  func (wwa WebWebAnswer) AsBasicResponse() (BasicResponse, bool) {
  7811  	return &wwa, true
  7812  }
  7813  
  7814  // AsThing is the BasicResponseBase implementation for WebWebAnswer.
  7815  func (wwa WebWebAnswer) AsThing() (*Thing, bool) {
  7816  	return nil, false
  7817  }
  7818  
  7819  // AsBasicThing is the BasicResponseBase implementation for WebWebAnswer.
  7820  func (wwa WebWebAnswer) AsBasicThing() (BasicThing, bool) {
  7821  	return nil, false
  7822  }
  7823  
  7824  // AsPlaces is the BasicResponseBase implementation for WebWebAnswer.
  7825  func (wwa WebWebAnswer) AsPlaces() (*Places, bool) {
  7826  	return nil, false
  7827  }
  7828  
  7829  // AsSearchResultsAnswer is the BasicResponseBase implementation for WebWebAnswer.
  7830  func (wwa WebWebAnswer) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  7831  	return nil, false
  7832  }
  7833  
  7834  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for WebWebAnswer.
  7835  func (wwa WebWebAnswer) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  7836  	return &wwa, true
  7837  }
  7838  
  7839  // AsAnswer is the BasicResponseBase implementation for WebWebAnswer.
  7840  func (wwa WebWebAnswer) AsAnswer() (*Answer, bool) {
  7841  	return nil, false
  7842  }
  7843  
  7844  // AsBasicAnswer is the BasicResponseBase implementation for WebWebAnswer.
  7845  func (wwa WebWebAnswer) AsBasicAnswer() (BasicAnswer, bool) {
  7846  	return &wwa, true
  7847  }
  7848  
  7849  // AsErrorResponse is the BasicResponseBase implementation for WebWebAnswer.
  7850  func (wwa WebWebAnswer) AsErrorResponse() (*ErrorResponse, bool) {
  7851  	return nil, false
  7852  }
  7853  
  7854  // AsCreativeWork is the BasicResponseBase implementation for WebWebAnswer.
  7855  func (wwa WebWebAnswer) AsCreativeWork() (*CreativeWork, bool) {
  7856  	return nil, false
  7857  }
  7858  
  7859  // AsBasicCreativeWork is the BasicResponseBase implementation for WebWebAnswer.
  7860  func (wwa WebWebAnswer) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  7861  	return nil, false
  7862  }
  7863  
  7864  // AsIntangible is the BasicResponseBase implementation for WebWebAnswer.
  7865  func (wwa WebWebAnswer) AsIntangible() (*Intangible, bool) {
  7866  	return nil, false
  7867  }
  7868  
  7869  // AsBasicIntangible is the BasicResponseBase implementation for WebWebAnswer.
  7870  func (wwa WebWebAnswer) AsBasicIntangible() (BasicIntangible, bool) {
  7871  	return nil, false
  7872  }
  7873  
  7874  // AsMediaObject is the BasicResponseBase implementation for WebWebAnswer.
  7875  func (wwa WebWebAnswer) AsMediaObject() (*MediaObject, bool) {
  7876  	return nil, false
  7877  }
  7878  
  7879  // AsBasicMediaObject is the BasicResponseBase implementation for WebWebAnswer.
  7880  func (wwa WebWebAnswer) AsBasicMediaObject() (BasicMediaObject, bool) {
  7881  	return nil, false
  7882  }
  7883  
  7884  // AsArticle is the BasicResponseBase implementation for WebWebAnswer.
  7885  func (wwa WebWebAnswer) AsArticle() (*Article, bool) {
  7886  	return nil, false
  7887  }
  7888  
  7889  // AsBasicArticle is the BasicResponseBase implementation for WebWebAnswer.
  7890  func (wwa WebWebAnswer) AsBasicArticle() (BasicArticle, bool) {
  7891  	return nil, false
  7892  }
  7893  
  7894  // AsStructuredValue is the BasicResponseBase implementation for WebWebAnswer.
  7895  func (wwa WebWebAnswer) AsStructuredValue() (*StructuredValue, bool) {
  7896  	return nil, false
  7897  }
  7898  
  7899  // AsResponseBase is the BasicResponseBase implementation for WebWebAnswer.
  7900  func (wwa WebWebAnswer) AsResponseBase() (*ResponseBase, bool) {
  7901  	return nil, false
  7902  }
  7903  
  7904  // AsBasicResponseBase is the BasicResponseBase implementation for WebWebAnswer.
  7905  func (wwa WebWebAnswer) AsBasicResponseBase() (BasicResponseBase, bool) {
  7906  	return &wwa, true
  7907  }
  7908  
  7909  // BasicWebWebGrouping ...
  7910  type BasicWebWebGrouping interface {
  7911  	AsWebWebGrouping() (*WebWebGrouping, bool)
  7912  }
  7913  
  7914  // WebWebGrouping ...
  7915  type WebWebGrouping struct {
  7916  	WebPages *[]WebPage `json:"webPages,omitempty"`
  7917  	// Type - Possible values include: 'TypeWebWebGrouping'
  7918  	Type Type `json:"_type,omitempty"`
  7919  }
  7920  
  7921  func unmarshalBasicWebWebGrouping(body []byte) (BasicWebWebGrouping, error) {
  7922  	var m map[string]interface{}
  7923  	err := json.Unmarshal(body, &m)
  7924  	if err != nil {
  7925  		return nil, err
  7926  	}
  7927  
  7928  	switch m["_type"] {
  7929  	default:
  7930  		var wwg WebWebGrouping
  7931  		err := json.Unmarshal(body, &wwg)
  7932  		return wwg, err
  7933  	}
  7934  }
  7935  func unmarshalBasicWebWebGroupingArray(body []byte) ([]BasicWebWebGrouping, error) {
  7936  	var rawMessages []*json.RawMessage
  7937  	err := json.Unmarshal(body, &rawMessages)
  7938  	if err != nil {
  7939  		return nil, err
  7940  	}
  7941  
  7942  	wwgArray := make([]BasicWebWebGrouping, len(rawMessages))
  7943  
  7944  	for index, rawMessage := range rawMessages {
  7945  		wwg, err := unmarshalBasicWebWebGrouping(*rawMessage)
  7946  		if err != nil {
  7947  			return nil, err
  7948  		}
  7949  		wwgArray[index] = wwg
  7950  	}
  7951  	return wwgArray, nil
  7952  }
  7953  
  7954  // MarshalJSON is the custom marshaler for WebWebGrouping.
  7955  func (wwg WebWebGrouping) MarshalJSON() ([]byte, error) {
  7956  	wwg.Type = TypeWebWebGrouping
  7957  	objectMap := make(map[string]interface{})
  7958  	if wwg.WebPages != nil {
  7959  		objectMap["webPages"] = wwg.WebPages
  7960  	}
  7961  	if wwg.Type != "" {
  7962  		objectMap["_type"] = wwg.Type
  7963  	}
  7964  	return json.Marshal(objectMap)
  7965  }
  7966  
  7967  // AsWebWebGrouping is the BasicWebWebGrouping implementation for WebWebGrouping.
  7968  func (wwg WebWebGrouping) AsWebWebGrouping() (*WebWebGrouping, bool) {
  7969  	return &wwg, true
  7970  }
  7971  
  7972  // AsBasicWebWebGrouping is the BasicWebWebGrouping implementation for WebWebGrouping.
  7973  func (wwg WebWebGrouping) AsBasicWebWebGrouping() (BasicWebWebGrouping, bool) {
  7974  	return &wwg, true
  7975  }
  7976  

View as plain text