...

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

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

     1  package videosearch
     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/videosearch"
    16  
    17  // BasicAnswer ...
    18  type BasicAnswer interface {
    19  	AsVideos() (*Videos, bool)
    20  	AsSearchResultsAnswer() (*SearchResultsAnswer, bool)
    21  	AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool)
    22  	AsAnswer() (*Answer, bool)
    23  }
    24  
    25  // Answer ...
    26  type Answer struct {
    27  	// FollowUpQueries - READ-ONLY
    28  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
    29  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
    30  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
    31  	// ID - READ-ONLY; A String identifier.
    32  	ID *string `json:"id,omitempty"`
    33  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
    34  	Type Type `json:"_type,omitempty"`
    35  }
    36  
    37  func unmarshalBasicAnswer(body []byte) (BasicAnswer, error) {
    38  	var m map[string]interface{}
    39  	err := json.Unmarshal(body, &m)
    40  	if err != nil {
    41  		return nil, err
    42  	}
    43  
    44  	switch m["_type"] {
    45  	case string(TypeVideos):
    46  		var vVar Videos
    47  		err := json.Unmarshal(body, &vVar)
    48  		return vVar, err
    49  	case string(TypeSearchResultsAnswer):
    50  		var sra SearchResultsAnswer
    51  		err := json.Unmarshal(body, &sra)
    52  		return sra, err
    53  	default:
    54  		var a Answer
    55  		err := json.Unmarshal(body, &a)
    56  		return a, err
    57  	}
    58  }
    59  func unmarshalBasicAnswerArray(body []byte) ([]BasicAnswer, error) {
    60  	var rawMessages []*json.RawMessage
    61  	err := json.Unmarshal(body, &rawMessages)
    62  	if err != nil {
    63  		return nil, err
    64  	}
    65  
    66  	aArray := make([]BasicAnswer, len(rawMessages))
    67  
    68  	for index, rawMessage := range rawMessages {
    69  		a, err := unmarshalBasicAnswer(*rawMessage)
    70  		if err != nil {
    71  			return nil, err
    72  		}
    73  		aArray[index] = a
    74  	}
    75  	return aArray, nil
    76  }
    77  
    78  // MarshalJSON is the custom marshaler for Answer.
    79  func (a Answer) MarshalJSON() ([]byte, error) {
    80  	a.Type = TypeAnswer
    81  	objectMap := make(map[string]interface{})
    82  	if a.Type != "" {
    83  		objectMap["_type"] = a.Type
    84  	}
    85  	return json.Marshal(objectMap)
    86  }
    87  
    88  // AsImageObject is the BasicResponseBase implementation for Answer.
    89  func (a Answer) AsImageObject() (*ImageObject, bool) {
    90  	return nil, false
    91  }
    92  
    93  // AsVideoObject is the BasicResponseBase implementation for Answer.
    94  func (a Answer) AsVideoObject() (*VideoObject, bool) {
    95  	return nil, false
    96  }
    97  
    98  // AsVideos is the BasicResponseBase implementation for Answer.
    99  func (a Answer) AsVideos() (*Videos, bool) {
   100  	return nil, false
   101  }
   102  
   103  // AsSearchResultsAnswer is the BasicResponseBase implementation for Answer.
   104  func (a Answer) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
   105  	return nil, false
   106  }
   107  
   108  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Answer.
   109  func (a Answer) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
   110  	return nil, false
   111  }
   112  
   113  // AsAnswer is the BasicResponseBase implementation for Answer.
   114  func (a Answer) AsAnswer() (*Answer, bool) {
   115  	return &a, true
   116  }
   117  
   118  // AsBasicAnswer is the BasicResponseBase implementation for Answer.
   119  func (a Answer) AsBasicAnswer() (BasicAnswer, bool) {
   120  	return &a, true
   121  }
   122  
   123  // AsMediaObject is the BasicResponseBase implementation for Answer.
   124  func (a Answer) AsMediaObject() (*MediaObject, bool) {
   125  	return nil, false
   126  }
   127  
   128  // AsBasicMediaObject is the BasicResponseBase implementation for Answer.
   129  func (a Answer) AsBasicMediaObject() (BasicMediaObject, bool) {
   130  	return nil, false
   131  }
   132  
   133  // AsResponse is the BasicResponseBase implementation for Answer.
   134  func (a Answer) AsResponse() (*Response, bool) {
   135  	return nil, false
   136  }
   137  
   138  // AsBasicResponse is the BasicResponseBase implementation for Answer.
   139  func (a Answer) AsBasicResponse() (BasicResponse, bool) {
   140  	return &a, true
   141  }
   142  
   143  // AsThing is the BasicResponseBase implementation for Answer.
   144  func (a Answer) AsThing() (*Thing, bool) {
   145  	return nil, false
   146  }
   147  
   148  // AsBasicThing is the BasicResponseBase implementation for Answer.
   149  func (a Answer) AsBasicThing() (BasicThing, bool) {
   150  	return nil, false
   151  }
   152  
   153  // AsCreativeWork is the BasicResponseBase implementation for Answer.
   154  func (a Answer) AsCreativeWork() (*CreativeWork, bool) {
   155  	return nil, false
   156  }
   157  
   158  // AsBasicCreativeWork is the BasicResponseBase implementation for Answer.
   159  func (a Answer) AsBasicCreativeWork() (BasicCreativeWork, bool) {
   160  	return nil, false
   161  }
   162  
   163  // AsIdentifiable is the BasicResponseBase implementation for Answer.
   164  func (a Answer) AsIdentifiable() (*Identifiable, bool) {
   165  	return nil, false
   166  }
   167  
   168  // AsBasicIdentifiable is the BasicResponseBase implementation for Answer.
   169  func (a Answer) AsBasicIdentifiable() (BasicIdentifiable, bool) {
   170  	return &a, true
   171  }
   172  
   173  // AsErrorResponse is the BasicResponseBase implementation for Answer.
   174  func (a Answer) AsErrorResponse() (*ErrorResponse, bool) {
   175  	return nil, false
   176  }
   177  
   178  // AsTrendingVideos is the BasicResponseBase implementation for Answer.
   179  func (a Answer) AsTrendingVideos() (*TrendingVideos, bool) {
   180  	return nil, false
   181  }
   182  
   183  // AsVideoDetails is the BasicResponseBase implementation for Answer.
   184  func (a Answer) AsVideoDetails() (*VideoDetails, bool) {
   185  	return nil, false
   186  }
   187  
   188  // AsResponseBase is the BasicResponseBase implementation for Answer.
   189  func (a Answer) AsResponseBase() (*ResponseBase, bool) {
   190  	return nil, false
   191  }
   192  
   193  // AsBasicResponseBase is the BasicResponseBase implementation for Answer.
   194  func (a Answer) AsBasicResponseBase() (BasicResponseBase, bool) {
   195  	return &a, true
   196  }
   197  
   198  // BasicCreativeWork ...
   199  type BasicCreativeWork interface {
   200  	AsImageObject() (*ImageObject, bool)
   201  	AsVideoObject() (*VideoObject, bool)
   202  	AsMediaObject() (*MediaObject, bool)
   203  	AsBasicMediaObject() (BasicMediaObject, bool)
   204  	AsCreativeWork() (*CreativeWork, bool)
   205  }
   206  
   207  // CreativeWork ...
   208  type CreativeWork struct {
   209  	// ThumbnailURL - READ-ONLY; The URL to a thumbnail of the item.
   210  	ThumbnailURL *string `json:"thumbnailUrl,omitempty"`
   211  	// Provider - READ-ONLY; The source of the creative work.
   212  	Provider *[]BasicThing `json:"provider,omitempty"`
   213  	// Text - READ-ONLY
   214  	Text *string `json:"text,omitempty"`
   215  	// Name - READ-ONLY; The name of the thing represented by this object.
   216  	Name *string `json:"name,omitempty"`
   217  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
   218  	URL *string `json:"url,omitempty"`
   219  	// Image - READ-ONLY
   220  	Image *ImageObject `json:"image,omitempty"`
   221  	// Description - READ-ONLY; A short description of the item.
   222  	Description *string `json:"description,omitempty"`
   223  	// AlternateName - READ-ONLY
   224  	AlternateName *string `json:"alternateName,omitempty"`
   225  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
   226  	BingID *string `json:"bingId,omitempty"`
   227  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
   228  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
   229  	// ID - READ-ONLY; A String identifier.
   230  	ID *string `json:"id,omitempty"`
   231  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
   232  	Type Type `json:"_type,omitempty"`
   233  }
   234  
   235  func unmarshalBasicCreativeWork(body []byte) (BasicCreativeWork, error) {
   236  	var m map[string]interface{}
   237  	err := json.Unmarshal(body, &m)
   238  	if err != nil {
   239  		return nil, err
   240  	}
   241  
   242  	switch m["_type"] {
   243  	case string(TypeImageObject):
   244  		var ioVar ImageObject
   245  		err := json.Unmarshal(body, &ioVar)
   246  		return ioVar, err
   247  	case string(TypeVideoObject):
   248  		var vo VideoObject
   249  		err := json.Unmarshal(body, &vo)
   250  		return vo, err
   251  	case string(TypeMediaObject):
   252  		var mo MediaObject
   253  		err := json.Unmarshal(body, &mo)
   254  		return mo, err
   255  	default:
   256  		var cw CreativeWork
   257  		err := json.Unmarshal(body, &cw)
   258  		return cw, err
   259  	}
   260  }
   261  func unmarshalBasicCreativeWorkArray(body []byte) ([]BasicCreativeWork, error) {
   262  	var rawMessages []*json.RawMessage
   263  	err := json.Unmarshal(body, &rawMessages)
   264  	if err != nil {
   265  		return nil, err
   266  	}
   267  
   268  	cwArray := make([]BasicCreativeWork, len(rawMessages))
   269  
   270  	for index, rawMessage := range rawMessages {
   271  		cw, err := unmarshalBasicCreativeWork(*rawMessage)
   272  		if err != nil {
   273  			return nil, err
   274  		}
   275  		cwArray[index] = cw
   276  	}
   277  	return cwArray, nil
   278  }
   279  
   280  // MarshalJSON is the custom marshaler for CreativeWork.
   281  func (cw CreativeWork) MarshalJSON() ([]byte, error) {
   282  	cw.Type = TypeCreativeWork
   283  	objectMap := make(map[string]interface{})
   284  	if cw.Type != "" {
   285  		objectMap["_type"] = cw.Type
   286  	}
   287  	return json.Marshal(objectMap)
   288  }
   289  
   290  // AsImageObject is the BasicResponseBase implementation for CreativeWork.
   291  func (cw CreativeWork) AsImageObject() (*ImageObject, bool) {
   292  	return nil, false
   293  }
   294  
   295  // AsVideoObject is the BasicResponseBase implementation for CreativeWork.
   296  func (cw CreativeWork) AsVideoObject() (*VideoObject, bool) {
   297  	return nil, false
   298  }
   299  
   300  // AsVideos is the BasicResponseBase implementation for CreativeWork.
   301  func (cw CreativeWork) AsVideos() (*Videos, bool) {
   302  	return nil, false
   303  }
   304  
   305  // AsSearchResultsAnswer is the BasicResponseBase implementation for CreativeWork.
   306  func (cw CreativeWork) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
   307  	return nil, false
   308  }
   309  
   310  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for CreativeWork.
   311  func (cw CreativeWork) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
   312  	return nil, false
   313  }
   314  
   315  // AsAnswer is the BasicResponseBase implementation for CreativeWork.
   316  func (cw CreativeWork) AsAnswer() (*Answer, bool) {
   317  	return nil, false
   318  }
   319  
   320  // AsBasicAnswer is the BasicResponseBase implementation for CreativeWork.
   321  func (cw CreativeWork) AsBasicAnswer() (BasicAnswer, bool) {
   322  	return nil, false
   323  }
   324  
   325  // AsMediaObject is the BasicResponseBase implementation for CreativeWork.
   326  func (cw CreativeWork) AsMediaObject() (*MediaObject, bool) {
   327  	return nil, false
   328  }
   329  
   330  // AsBasicMediaObject is the BasicResponseBase implementation for CreativeWork.
   331  func (cw CreativeWork) AsBasicMediaObject() (BasicMediaObject, bool) {
   332  	return nil, false
   333  }
   334  
   335  // AsResponse is the BasicResponseBase implementation for CreativeWork.
   336  func (cw CreativeWork) AsResponse() (*Response, bool) {
   337  	return nil, false
   338  }
   339  
   340  // AsBasicResponse is the BasicResponseBase implementation for CreativeWork.
   341  func (cw CreativeWork) AsBasicResponse() (BasicResponse, bool) {
   342  	return &cw, true
   343  }
   344  
   345  // AsThing is the BasicResponseBase implementation for CreativeWork.
   346  func (cw CreativeWork) AsThing() (*Thing, bool) {
   347  	return nil, false
   348  }
   349  
   350  // AsBasicThing is the BasicResponseBase implementation for CreativeWork.
   351  func (cw CreativeWork) AsBasicThing() (BasicThing, bool) {
   352  	return &cw, true
   353  }
   354  
   355  // AsCreativeWork is the BasicResponseBase implementation for CreativeWork.
   356  func (cw CreativeWork) AsCreativeWork() (*CreativeWork, bool) {
   357  	return &cw, true
   358  }
   359  
   360  // AsBasicCreativeWork is the BasicResponseBase implementation for CreativeWork.
   361  func (cw CreativeWork) AsBasicCreativeWork() (BasicCreativeWork, bool) {
   362  	return &cw, true
   363  }
   364  
   365  // AsIdentifiable is the BasicResponseBase implementation for CreativeWork.
   366  func (cw CreativeWork) AsIdentifiable() (*Identifiable, bool) {
   367  	return nil, false
   368  }
   369  
   370  // AsBasicIdentifiable is the BasicResponseBase implementation for CreativeWork.
   371  func (cw CreativeWork) AsBasicIdentifiable() (BasicIdentifiable, bool) {
   372  	return &cw, true
   373  }
   374  
   375  // AsErrorResponse is the BasicResponseBase implementation for CreativeWork.
   376  func (cw CreativeWork) AsErrorResponse() (*ErrorResponse, bool) {
   377  	return nil, false
   378  }
   379  
   380  // AsTrendingVideos is the BasicResponseBase implementation for CreativeWork.
   381  func (cw CreativeWork) AsTrendingVideos() (*TrendingVideos, bool) {
   382  	return nil, false
   383  }
   384  
   385  // AsVideoDetails is the BasicResponseBase implementation for CreativeWork.
   386  func (cw CreativeWork) AsVideoDetails() (*VideoDetails, bool) {
   387  	return nil, false
   388  }
   389  
   390  // AsResponseBase is the BasicResponseBase implementation for CreativeWork.
   391  func (cw CreativeWork) AsResponseBase() (*ResponseBase, bool) {
   392  	return nil, false
   393  }
   394  
   395  // AsBasicResponseBase is the BasicResponseBase implementation for CreativeWork.
   396  func (cw CreativeWork) AsBasicResponseBase() (BasicResponseBase, bool) {
   397  	return &cw, true
   398  }
   399  
   400  // UnmarshalJSON is the custom unmarshaler for CreativeWork struct.
   401  func (cw *CreativeWork) UnmarshalJSON(body []byte) error {
   402  	var m map[string]*json.RawMessage
   403  	err := json.Unmarshal(body, &m)
   404  	if err != nil {
   405  		return err
   406  	}
   407  	for k, v := range m {
   408  		switch k {
   409  		case "thumbnailUrl":
   410  			if v != nil {
   411  				var thumbnailURL string
   412  				err = json.Unmarshal(*v, &thumbnailURL)
   413  				if err != nil {
   414  					return err
   415  				}
   416  				cw.ThumbnailURL = &thumbnailURL
   417  			}
   418  		case "provider":
   419  			if v != nil {
   420  				provider, err := unmarshalBasicThingArray(*v)
   421  				if err != nil {
   422  					return err
   423  				}
   424  				cw.Provider = &provider
   425  			}
   426  		case "text":
   427  			if v != nil {
   428  				var textVar string
   429  				err = json.Unmarshal(*v, &textVar)
   430  				if err != nil {
   431  					return err
   432  				}
   433  				cw.Text = &textVar
   434  			}
   435  		case "name":
   436  			if v != nil {
   437  				var name string
   438  				err = json.Unmarshal(*v, &name)
   439  				if err != nil {
   440  					return err
   441  				}
   442  				cw.Name = &name
   443  			}
   444  		case "url":
   445  			if v != nil {
   446  				var URL string
   447  				err = json.Unmarshal(*v, &URL)
   448  				if err != nil {
   449  					return err
   450  				}
   451  				cw.URL = &URL
   452  			}
   453  		case "image":
   454  			if v != nil {
   455  				var imageVar ImageObject
   456  				err = json.Unmarshal(*v, &imageVar)
   457  				if err != nil {
   458  					return err
   459  				}
   460  				cw.Image = &imageVar
   461  			}
   462  		case "description":
   463  			if v != nil {
   464  				var description string
   465  				err = json.Unmarshal(*v, &description)
   466  				if err != nil {
   467  					return err
   468  				}
   469  				cw.Description = &description
   470  			}
   471  		case "alternateName":
   472  			if v != nil {
   473  				var alternateName string
   474  				err = json.Unmarshal(*v, &alternateName)
   475  				if err != nil {
   476  					return err
   477  				}
   478  				cw.AlternateName = &alternateName
   479  			}
   480  		case "bingId":
   481  			if v != nil {
   482  				var bingID string
   483  				err = json.Unmarshal(*v, &bingID)
   484  				if err != nil {
   485  					return err
   486  				}
   487  				cw.BingID = &bingID
   488  			}
   489  		case "webSearchUrl":
   490  			if v != nil {
   491  				var webSearchURL string
   492  				err = json.Unmarshal(*v, &webSearchURL)
   493  				if err != nil {
   494  					return err
   495  				}
   496  				cw.WebSearchURL = &webSearchURL
   497  			}
   498  		case "id":
   499  			if v != nil {
   500  				var ID string
   501  				err = json.Unmarshal(*v, &ID)
   502  				if err != nil {
   503  					return err
   504  				}
   505  				cw.ID = &ID
   506  			}
   507  		case "_type":
   508  			if v != nil {
   509  				var typeVar Type
   510  				err = json.Unmarshal(*v, &typeVar)
   511  				if err != nil {
   512  					return err
   513  				}
   514  				cw.Type = typeVar
   515  			}
   516  		}
   517  	}
   518  
   519  	return nil
   520  }
   521  
   522  // Error defines the error that occurred.
   523  type Error struct {
   524  	// Code - The error code that identifies the category of error. Possible values include: 'None', 'ServerError', 'InvalidRequest', 'RateLimitExceeded', 'InvalidAuthorization', 'InsufficientAuthorization'
   525  	Code ErrorCode `json:"code,omitempty"`
   526  	// 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'
   527  	SubCode ErrorSubCode `json:"subCode,omitempty"`
   528  	// Message - A description of the error.
   529  	Message *string `json:"message,omitempty"`
   530  	// MoreDetails - READ-ONLY; A description that provides additional information about the error.
   531  	MoreDetails *string `json:"moreDetails,omitempty"`
   532  	// Parameter - READ-ONLY; The parameter in the request that caused the error.
   533  	Parameter *string `json:"parameter,omitempty"`
   534  	// Value - READ-ONLY; The parameter's value in the request that was not valid.
   535  	Value *string `json:"value,omitempty"`
   536  }
   537  
   538  // MarshalJSON is the custom marshaler for Error.
   539  func (e Error) MarshalJSON() ([]byte, error) {
   540  	objectMap := make(map[string]interface{})
   541  	if e.Code != "" {
   542  		objectMap["code"] = e.Code
   543  	}
   544  	if e.Message != nil {
   545  		objectMap["message"] = e.Message
   546  	}
   547  	return json.Marshal(objectMap)
   548  }
   549  
   550  // ErrorResponse the top-level response that represents a failed request.
   551  type ErrorResponse struct {
   552  	// Errors - A list of errors that describe the reasons why the request failed.
   553  	Errors *[]Error `json:"errors,omitempty"`
   554  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
   555  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
   556  	// ID - READ-ONLY; A String identifier.
   557  	ID *string `json:"id,omitempty"`
   558  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
   559  	Type Type `json:"_type,omitempty"`
   560  }
   561  
   562  // MarshalJSON is the custom marshaler for ErrorResponse.
   563  func (er ErrorResponse) MarshalJSON() ([]byte, error) {
   564  	er.Type = TypeErrorResponse
   565  	objectMap := make(map[string]interface{})
   566  	if er.Errors != nil {
   567  		objectMap["errors"] = er.Errors
   568  	}
   569  	if er.Type != "" {
   570  		objectMap["_type"] = er.Type
   571  	}
   572  	return json.Marshal(objectMap)
   573  }
   574  
   575  // AsImageObject is the BasicResponseBase implementation for ErrorResponse.
   576  func (er ErrorResponse) AsImageObject() (*ImageObject, bool) {
   577  	return nil, false
   578  }
   579  
   580  // AsVideoObject is the BasicResponseBase implementation for ErrorResponse.
   581  func (er ErrorResponse) AsVideoObject() (*VideoObject, bool) {
   582  	return nil, false
   583  }
   584  
   585  // AsVideos is the BasicResponseBase implementation for ErrorResponse.
   586  func (er ErrorResponse) AsVideos() (*Videos, bool) {
   587  	return nil, false
   588  }
   589  
   590  // AsSearchResultsAnswer is the BasicResponseBase implementation for ErrorResponse.
   591  func (er ErrorResponse) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
   592  	return nil, false
   593  }
   594  
   595  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for ErrorResponse.
   596  func (er ErrorResponse) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
   597  	return nil, false
   598  }
   599  
   600  // AsAnswer is the BasicResponseBase implementation for ErrorResponse.
   601  func (er ErrorResponse) AsAnswer() (*Answer, bool) {
   602  	return nil, false
   603  }
   604  
   605  // AsBasicAnswer is the BasicResponseBase implementation for ErrorResponse.
   606  func (er ErrorResponse) AsBasicAnswer() (BasicAnswer, bool) {
   607  	return nil, false
   608  }
   609  
   610  // AsMediaObject is the BasicResponseBase implementation for ErrorResponse.
   611  func (er ErrorResponse) AsMediaObject() (*MediaObject, bool) {
   612  	return nil, false
   613  }
   614  
   615  // AsBasicMediaObject is the BasicResponseBase implementation for ErrorResponse.
   616  func (er ErrorResponse) AsBasicMediaObject() (BasicMediaObject, bool) {
   617  	return nil, false
   618  }
   619  
   620  // AsResponse is the BasicResponseBase implementation for ErrorResponse.
   621  func (er ErrorResponse) AsResponse() (*Response, bool) {
   622  	return nil, false
   623  }
   624  
   625  // AsBasicResponse is the BasicResponseBase implementation for ErrorResponse.
   626  func (er ErrorResponse) AsBasicResponse() (BasicResponse, bool) {
   627  	return &er, true
   628  }
   629  
   630  // AsThing is the BasicResponseBase implementation for ErrorResponse.
   631  func (er ErrorResponse) AsThing() (*Thing, bool) {
   632  	return nil, false
   633  }
   634  
   635  // AsBasicThing is the BasicResponseBase implementation for ErrorResponse.
   636  func (er ErrorResponse) AsBasicThing() (BasicThing, bool) {
   637  	return nil, false
   638  }
   639  
   640  // AsCreativeWork is the BasicResponseBase implementation for ErrorResponse.
   641  func (er ErrorResponse) AsCreativeWork() (*CreativeWork, bool) {
   642  	return nil, false
   643  }
   644  
   645  // AsBasicCreativeWork is the BasicResponseBase implementation for ErrorResponse.
   646  func (er ErrorResponse) AsBasicCreativeWork() (BasicCreativeWork, bool) {
   647  	return nil, false
   648  }
   649  
   650  // AsIdentifiable is the BasicResponseBase implementation for ErrorResponse.
   651  func (er ErrorResponse) AsIdentifiable() (*Identifiable, bool) {
   652  	return nil, false
   653  }
   654  
   655  // AsBasicIdentifiable is the BasicResponseBase implementation for ErrorResponse.
   656  func (er ErrorResponse) AsBasicIdentifiable() (BasicIdentifiable, bool) {
   657  	return &er, true
   658  }
   659  
   660  // AsErrorResponse is the BasicResponseBase implementation for ErrorResponse.
   661  func (er ErrorResponse) AsErrorResponse() (*ErrorResponse, bool) {
   662  	return &er, true
   663  }
   664  
   665  // AsTrendingVideos is the BasicResponseBase implementation for ErrorResponse.
   666  func (er ErrorResponse) AsTrendingVideos() (*TrendingVideos, bool) {
   667  	return nil, false
   668  }
   669  
   670  // AsVideoDetails is the BasicResponseBase implementation for ErrorResponse.
   671  func (er ErrorResponse) AsVideoDetails() (*VideoDetails, bool) {
   672  	return nil, false
   673  }
   674  
   675  // AsResponseBase is the BasicResponseBase implementation for ErrorResponse.
   676  func (er ErrorResponse) AsResponseBase() (*ResponseBase, bool) {
   677  	return nil, false
   678  }
   679  
   680  // AsBasicResponseBase is the BasicResponseBase implementation for ErrorResponse.
   681  func (er ErrorResponse) AsBasicResponseBase() (BasicResponseBase, bool) {
   682  	return &er, true
   683  }
   684  
   685  // BasicIdentifiable defines the identity of a resource.
   686  type BasicIdentifiable interface {
   687  	AsImageObject() (*ImageObject, bool)
   688  	AsVideoObject() (*VideoObject, bool)
   689  	AsVideos() (*Videos, bool)
   690  	AsSearchResultsAnswer() (*SearchResultsAnswer, bool)
   691  	AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool)
   692  	AsAnswer() (*Answer, bool)
   693  	AsBasicAnswer() (BasicAnswer, bool)
   694  	AsMediaObject() (*MediaObject, bool)
   695  	AsBasicMediaObject() (BasicMediaObject, bool)
   696  	AsResponse() (*Response, bool)
   697  	AsBasicResponse() (BasicResponse, bool)
   698  	AsThing() (*Thing, bool)
   699  	AsBasicThing() (BasicThing, bool)
   700  	AsCreativeWork() (*CreativeWork, bool)
   701  	AsBasicCreativeWork() (BasicCreativeWork, bool)
   702  	AsErrorResponse() (*ErrorResponse, bool)
   703  	AsTrendingVideos() (*TrendingVideos, bool)
   704  	AsVideoDetails() (*VideoDetails, bool)
   705  	AsIdentifiable() (*Identifiable, bool)
   706  }
   707  
   708  // Identifiable defines the identity of a resource.
   709  type Identifiable struct {
   710  	// ID - READ-ONLY; A String identifier.
   711  	ID *string `json:"id,omitempty"`
   712  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
   713  	Type Type `json:"_type,omitempty"`
   714  }
   715  
   716  func unmarshalBasicIdentifiable(body []byte) (BasicIdentifiable, error) {
   717  	var m map[string]interface{}
   718  	err := json.Unmarshal(body, &m)
   719  	if err != nil {
   720  		return nil, err
   721  	}
   722  
   723  	switch m["_type"] {
   724  	case string(TypeImageObject):
   725  		var ioVar ImageObject
   726  		err := json.Unmarshal(body, &ioVar)
   727  		return ioVar, err
   728  	case string(TypeVideoObject):
   729  		var vo VideoObject
   730  		err := json.Unmarshal(body, &vo)
   731  		return vo, err
   732  	case string(TypeVideos):
   733  		var vVar Videos
   734  		err := json.Unmarshal(body, &vVar)
   735  		return vVar, err
   736  	case string(TypeSearchResultsAnswer):
   737  		var sra SearchResultsAnswer
   738  		err := json.Unmarshal(body, &sra)
   739  		return sra, err
   740  	case string(TypeAnswer):
   741  		var a Answer
   742  		err := json.Unmarshal(body, &a)
   743  		return a, err
   744  	case string(TypeMediaObject):
   745  		var mo MediaObject
   746  		err := json.Unmarshal(body, &mo)
   747  		return mo, err
   748  	case string(TypeResponse):
   749  		var r Response
   750  		err := json.Unmarshal(body, &r)
   751  		return r, err
   752  	case string(TypeThing):
   753  		var t Thing
   754  		err := json.Unmarshal(body, &t)
   755  		return t, err
   756  	case string(TypeCreativeWork):
   757  		var cw CreativeWork
   758  		err := json.Unmarshal(body, &cw)
   759  		return cw, err
   760  	case string(TypeErrorResponse):
   761  		var er ErrorResponse
   762  		err := json.Unmarshal(body, &er)
   763  		return er, err
   764  	case string(TypeTrendingVideos):
   765  		var tv TrendingVideos
   766  		err := json.Unmarshal(body, &tv)
   767  		return tv, err
   768  	case string(TypeVideoDetails):
   769  		var vd VideoDetails
   770  		err := json.Unmarshal(body, &vd)
   771  		return vd, err
   772  	default:
   773  		var i Identifiable
   774  		err := json.Unmarshal(body, &i)
   775  		return i, err
   776  	}
   777  }
   778  func unmarshalBasicIdentifiableArray(body []byte) ([]BasicIdentifiable, error) {
   779  	var rawMessages []*json.RawMessage
   780  	err := json.Unmarshal(body, &rawMessages)
   781  	if err != nil {
   782  		return nil, err
   783  	}
   784  
   785  	iArray := make([]BasicIdentifiable, len(rawMessages))
   786  
   787  	for index, rawMessage := range rawMessages {
   788  		i, err := unmarshalBasicIdentifiable(*rawMessage)
   789  		if err != nil {
   790  			return nil, err
   791  		}
   792  		iArray[index] = i
   793  	}
   794  	return iArray, nil
   795  }
   796  
   797  // MarshalJSON is the custom marshaler for Identifiable.
   798  func (i Identifiable) MarshalJSON() ([]byte, error) {
   799  	i.Type = TypeIdentifiable
   800  	objectMap := make(map[string]interface{})
   801  	if i.Type != "" {
   802  		objectMap["_type"] = i.Type
   803  	}
   804  	return json.Marshal(objectMap)
   805  }
   806  
   807  // AsImageObject is the BasicResponseBase implementation for Identifiable.
   808  func (i Identifiable) AsImageObject() (*ImageObject, bool) {
   809  	return nil, false
   810  }
   811  
   812  // AsVideoObject is the BasicResponseBase implementation for Identifiable.
   813  func (i Identifiable) AsVideoObject() (*VideoObject, bool) {
   814  	return nil, false
   815  }
   816  
   817  // AsVideos is the BasicResponseBase implementation for Identifiable.
   818  func (i Identifiable) AsVideos() (*Videos, bool) {
   819  	return nil, false
   820  }
   821  
   822  // AsSearchResultsAnswer is the BasicResponseBase implementation for Identifiable.
   823  func (i Identifiable) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
   824  	return nil, false
   825  }
   826  
   827  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Identifiable.
   828  func (i Identifiable) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
   829  	return nil, false
   830  }
   831  
   832  // AsAnswer is the BasicResponseBase implementation for Identifiable.
   833  func (i Identifiable) AsAnswer() (*Answer, bool) {
   834  	return nil, false
   835  }
   836  
   837  // AsBasicAnswer is the BasicResponseBase implementation for Identifiable.
   838  func (i Identifiable) AsBasicAnswer() (BasicAnswer, bool) {
   839  	return nil, false
   840  }
   841  
   842  // AsMediaObject is the BasicResponseBase implementation for Identifiable.
   843  func (i Identifiable) AsMediaObject() (*MediaObject, bool) {
   844  	return nil, false
   845  }
   846  
   847  // AsBasicMediaObject is the BasicResponseBase implementation for Identifiable.
   848  func (i Identifiable) AsBasicMediaObject() (BasicMediaObject, bool) {
   849  	return nil, false
   850  }
   851  
   852  // AsResponse is the BasicResponseBase implementation for Identifiable.
   853  func (i Identifiable) AsResponse() (*Response, bool) {
   854  	return nil, false
   855  }
   856  
   857  // AsBasicResponse is the BasicResponseBase implementation for Identifiable.
   858  func (i Identifiable) AsBasicResponse() (BasicResponse, bool) {
   859  	return nil, false
   860  }
   861  
   862  // AsThing is the BasicResponseBase implementation for Identifiable.
   863  func (i Identifiable) AsThing() (*Thing, bool) {
   864  	return nil, false
   865  }
   866  
   867  // AsBasicThing is the BasicResponseBase implementation for Identifiable.
   868  func (i Identifiable) AsBasicThing() (BasicThing, bool) {
   869  	return nil, false
   870  }
   871  
   872  // AsCreativeWork is the BasicResponseBase implementation for Identifiable.
   873  func (i Identifiable) AsCreativeWork() (*CreativeWork, bool) {
   874  	return nil, false
   875  }
   876  
   877  // AsBasicCreativeWork is the BasicResponseBase implementation for Identifiable.
   878  func (i Identifiable) AsBasicCreativeWork() (BasicCreativeWork, bool) {
   879  	return nil, false
   880  }
   881  
   882  // AsIdentifiable is the BasicResponseBase implementation for Identifiable.
   883  func (i Identifiable) AsIdentifiable() (*Identifiable, bool) {
   884  	return &i, true
   885  }
   886  
   887  // AsBasicIdentifiable is the BasicResponseBase implementation for Identifiable.
   888  func (i Identifiable) AsBasicIdentifiable() (BasicIdentifiable, bool) {
   889  	return &i, true
   890  }
   891  
   892  // AsErrorResponse is the BasicResponseBase implementation for Identifiable.
   893  func (i Identifiable) AsErrorResponse() (*ErrorResponse, bool) {
   894  	return nil, false
   895  }
   896  
   897  // AsTrendingVideos is the BasicResponseBase implementation for Identifiable.
   898  func (i Identifiable) AsTrendingVideos() (*TrendingVideos, bool) {
   899  	return nil, false
   900  }
   901  
   902  // AsVideoDetails is the BasicResponseBase implementation for Identifiable.
   903  func (i Identifiable) AsVideoDetails() (*VideoDetails, bool) {
   904  	return nil, false
   905  }
   906  
   907  // AsResponseBase is the BasicResponseBase implementation for Identifiable.
   908  func (i Identifiable) AsResponseBase() (*ResponseBase, bool) {
   909  	return nil, false
   910  }
   911  
   912  // AsBasicResponseBase is the BasicResponseBase implementation for Identifiable.
   913  func (i Identifiable) AsBasicResponseBase() (BasicResponseBase, bool) {
   914  	return &i, true
   915  }
   916  
   917  // ImageObject defines an image
   918  type ImageObject struct {
   919  	// Thumbnail - READ-ONLY; The URL to a thumbnail of the image
   920  	Thumbnail *ImageObject `json:"thumbnail,omitempty"`
   921  	// ContentURL - READ-ONLY; Original URL to retrieve the source (file) for the media object (e.g the source URL for the image).
   922  	ContentURL *string `json:"contentUrl,omitempty"`
   923  	// HostPageURL - READ-ONLY; URL of the page that hosts the media object.
   924  	HostPageURL *string `json:"hostPageUrl,omitempty"`
   925  	// Width - READ-ONLY; The width of the source media object, in pixels.
   926  	Width *int32 `json:"width,omitempty"`
   927  	// Height - READ-ONLY; The height of the source media object, in pixels.
   928  	Height *int32 `json:"height,omitempty"`
   929  	// ThumbnailURL - READ-ONLY; The URL to a thumbnail of the item.
   930  	ThumbnailURL *string `json:"thumbnailUrl,omitempty"`
   931  	// Provider - READ-ONLY; The source of the creative work.
   932  	Provider *[]BasicThing `json:"provider,omitempty"`
   933  	// Text - READ-ONLY
   934  	Text *string `json:"text,omitempty"`
   935  	// Name - READ-ONLY; The name of the thing represented by this object.
   936  	Name *string `json:"name,omitempty"`
   937  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
   938  	URL *string `json:"url,omitempty"`
   939  	// Image - READ-ONLY
   940  	Image *ImageObject `json:"image,omitempty"`
   941  	// Description - READ-ONLY; A short description of the item.
   942  	Description *string `json:"description,omitempty"`
   943  	// AlternateName - READ-ONLY
   944  	AlternateName *string `json:"alternateName,omitempty"`
   945  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
   946  	BingID *string `json:"bingId,omitempty"`
   947  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
   948  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
   949  	// ID - READ-ONLY; A String identifier.
   950  	ID *string `json:"id,omitempty"`
   951  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
   952  	Type Type `json:"_type,omitempty"`
   953  }
   954  
   955  // MarshalJSON is the custom marshaler for ImageObject.
   956  func (ioVar ImageObject) MarshalJSON() ([]byte, error) {
   957  	ioVar.Type = TypeImageObject
   958  	objectMap := make(map[string]interface{})
   959  	if ioVar.Type != "" {
   960  		objectMap["_type"] = ioVar.Type
   961  	}
   962  	return json.Marshal(objectMap)
   963  }
   964  
   965  // AsImageObject is the BasicResponseBase implementation for ImageObject.
   966  func (ioVar ImageObject) AsImageObject() (*ImageObject, bool) {
   967  	return &ioVar, true
   968  }
   969  
   970  // AsVideoObject is the BasicResponseBase implementation for ImageObject.
   971  func (ioVar ImageObject) AsVideoObject() (*VideoObject, bool) {
   972  	return nil, false
   973  }
   974  
   975  // AsVideos is the BasicResponseBase implementation for ImageObject.
   976  func (ioVar ImageObject) AsVideos() (*Videos, bool) {
   977  	return nil, false
   978  }
   979  
   980  // AsSearchResultsAnswer is the BasicResponseBase implementation for ImageObject.
   981  func (ioVar ImageObject) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
   982  	return nil, false
   983  }
   984  
   985  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for ImageObject.
   986  func (ioVar ImageObject) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
   987  	return nil, false
   988  }
   989  
   990  // AsAnswer is the BasicResponseBase implementation for ImageObject.
   991  func (ioVar ImageObject) AsAnswer() (*Answer, bool) {
   992  	return nil, false
   993  }
   994  
   995  // AsBasicAnswer is the BasicResponseBase implementation for ImageObject.
   996  func (ioVar ImageObject) AsBasicAnswer() (BasicAnswer, bool) {
   997  	return nil, false
   998  }
   999  
  1000  // AsMediaObject is the BasicResponseBase implementation for ImageObject.
  1001  func (ioVar ImageObject) AsMediaObject() (*MediaObject, bool) {
  1002  	return nil, false
  1003  }
  1004  
  1005  // AsBasicMediaObject is the BasicResponseBase implementation for ImageObject.
  1006  func (ioVar ImageObject) AsBasicMediaObject() (BasicMediaObject, bool) {
  1007  	return &ioVar, true
  1008  }
  1009  
  1010  // AsResponse is the BasicResponseBase implementation for ImageObject.
  1011  func (ioVar ImageObject) AsResponse() (*Response, bool) {
  1012  	return nil, false
  1013  }
  1014  
  1015  // AsBasicResponse is the BasicResponseBase implementation for ImageObject.
  1016  func (ioVar ImageObject) AsBasicResponse() (BasicResponse, bool) {
  1017  	return &ioVar, true
  1018  }
  1019  
  1020  // AsThing is the BasicResponseBase implementation for ImageObject.
  1021  func (ioVar ImageObject) AsThing() (*Thing, bool) {
  1022  	return nil, false
  1023  }
  1024  
  1025  // AsBasicThing is the BasicResponseBase implementation for ImageObject.
  1026  func (ioVar ImageObject) AsBasicThing() (BasicThing, bool) {
  1027  	return &ioVar, true
  1028  }
  1029  
  1030  // AsCreativeWork is the BasicResponseBase implementation for ImageObject.
  1031  func (ioVar ImageObject) AsCreativeWork() (*CreativeWork, bool) {
  1032  	return nil, false
  1033  }
  1034  
  1035  // AsBasicCreativeWork is the BasicResponseBase implementation for ImageObject.
  1036  func (ioVar ImageObject) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  1037  	return &ioVar, true
  1038  }
  1039  
  1040  // AsIdentifiable is the BasicResponseBase implementation for ImageObject.
  1041  func (ioVar ImageObject) AsIdentifiable() (*Identifiable, bool) {
  1042  	return nil, false
  1043  }
  1044  
  1045  // AsBasicIdentifiable is the BasicResponseBase implementation for ImageObject.
  1046  func (ioVar ImageObject) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  1047  	return &ioVar, true
  1048  }
  1049  
  1050  // AsErrorResponse is the BasicResponseBase implementation for ImageObject.
  1051  func (ioVar ImageObject) AsErrorResponse() (*ErrorResponse, bool) {
  1052  	return nil, false
  1053  }
  1054  
  1055  // AsTrendingVideos is the BasicResponseBase implementation for ImageObject.
  1056  func (ioVar ImageObject) AsTrendingVideos() (*TrendingVideos, bool) {
  1057  	return nil, false
  1058  }
  1059  
  1060  // AsVideoDetails is the BasicResponseBase implementation for ImageObject.
  1061  func (ioVar ImageObject) AsVideoDetails() (*VideoDetails, bool) {
  1062  	return nil, false
  1063  }
  1064  
  1065  // AsResponseBase is the BasicResponseBase implementation for ImageObject.
  1066  func (ioVar ImageObject) AsResponseBase() (*ResponseBase, bool) {
  1067  	return nil, false
  1068  }
  1069  
  1070  // AsBasicResponseBase is the BasicResponseBase implementation for ImageObject.
  1071  func (ioVar ImageObject) AsBasicResponseBase() (BasicResponseBase, bool) {
  1072  	return &ioVar, true
  1073  }
  1074  
  1075  // UnmarshalJSON is the custom unmarshaler for ImageObject struct.
  1076  func (ioVar *ImageObject) UnmarshalJSON(body []byte) error {
  1077  	var m map[string]*json.RawMessage
  1078  	err := json.Unmarshal(body, &m)
  1079  	if err != nil {
  1080  		return err
  1081  	}
  1082  	for k, v := range m {
  1083  		switch k {
  1084  		case "thumbnail":
  1085  			if v != nil {
  1086  				var thumbnail ImageObject
  1087  				err = json.Unmarshal(*v, &thumbnail)
  1088  				if err != nil {
  1089  					return err
  1090  				}
  1091  				ioVar.Thumbnail = &thumbnail
  1092  			}
  1093  		case "contentUrl":
  1094  			if v != nil {
  1095  				var contentURL string
  1096  				err = json.Unmarshal(*v, &contentURL)
  1097  				if err != nil {
  1098  					return err
  1099  				}
  1100  				ioVar.ContentURL = &contentURL
  1101  			}
  1102  		case "hostPageUrl":
  1103  			if v != nil {
  1104  				var hostPageURL string
  1105  				err = json.Unmarshal(*v, &hostPageURL)
  1106  				if err != nil {
  1107  					return err
  1108  				}
  1109  				ioVar.HostPageURL = &hostPageURL
  1110  			}
  1111  		case "width":
  1112  			if v != nil {
  1113  				var width int32
  1114  				err = json.Unmarshal(*v, &width)
  1115  				if err != nil {
  1116  					return err
  1117  				}
  1118  				ioVar.Width = &width
  1119  			}
  1120  		case "height":
  1121  			if v != nil {
  1122  				var height int32
  1123  				err = json.Unmarshal(*v, &height)
  1124  				if err != nil {
  1125  					return err
  1126  				}
  1127  				ioVar.Height = &height
  1128  			}
  1129  		case "thumbnailUrl":
  1130  			if v != nil {
  1131  				var thumbnailURL string
  1132  				err = json.Unmarshal(*v, &thumbnailURL)
  1133  				if err != nil {
  1134  					return err
  1135  				}
  1136  				ioVar.ThumbnailURL = &thumbnailURL
  1137  			}
  1138  		case "provider":
  1139  			if v != nil {
  1140  				provider, err := unmarshalBasicThingArray(*v)
  1141  				if err != nil {
  1142  					return err
  1143  				}
  1144  				ioVar.Provider = &provider
  1145  			}
  1146  		case "text":
  1147  			if v != nil {
  1148  				var textVar string
  1149  				err = json.Unmarshal(*v, &textVar)
  1150  				if err != nil {
  1151  					return err
  1152  				}
  1153  				ioVar.Text = &textVar
  1154  			}
  1155  		case "name":
  1156  			if v != nil {
  1157  				var name string
  1158  				err = json.Unmarshal(*v, &name)
  1159  				if err != nil {
  1160  					return err
  1161  				}
  1162  				ioVar.Name = &name
  1163  			}
  1164  		case "url":
  1165  			if v != nil {
  1166  				var URL string
  1167  				err = json.Unmarshal(*v, &URL)
  1168  				if err != nil {
  1169  					return err
  1170  				}
  1171  				ioVar.URL = &URL
  1172  			}
  1173  		case "image":
  1174  			if v != nil {
  1175  				var imageVar ImageObject
  1176  				err = json.Unmarshal(*v, &imageVar)
  1177  				if err != nil {
  1178  					return err
  1179  				}
  1180  				ioVar.Image = &imageVar
  1181  			}
  1182  		case "description":
  1183  			if v != nil {
  1184  				var description string
  1185  				err = json.Unmarshal(*v, &description)
  1186  				if err != nil {
  1187  					return err
  1188  				}
  1189  				ioVar.Description = &description
  1190  			}
  1191  		case "alternateName":
  1192  			if v != nil {
  1193  				var alternateName string
  1194  				err = json.Unmarshal(*v, &alternateName)
  1195  				if err != nil {
  1196  					return err
  1197  				}
  1198  				ioVar.AlternateName = &alternateName
  1199  			}
  1200  		case "bingId":
  1201  			if v != nil {
  1202  				var bingID string
  1203  				err = json.Unmarshal(*v, &bingID)
  1204  				if err != nil {
  1205  					return err
  1206  				}
  1207  				ioVar.BingID = &bingID
  1208  			}
  1209  		case "webSearchUrl":
  1210  			if v != nil {
  1211  				var webSearchURL string
  1212  				err = json.Unmarshal(*v, &webSearchURL)
  1213  				if err != nil {
  1214  					return err
  1215  				}
  1216  				ioVar.WebSearchURL = &webSearchURL
  1217  			}
  1218  		case "id":
  1219  			if v != nil {
  1220  				var ID string
  1221  				err = json.Unmarshal(*v, &ID)
  1222  				if err != nil {
  1223  					return err
  1224  				}
  1225  				ioVar.ID = &ID
  1226  			}
  1227  		case "_type":
  1228  			if v != nil {
  1229  				var typeVar Type
  1230  				err = json.Unmarshal(*v, &typeVar)
  1231  				if err != nil {
  1232  					return err
  1233  				}
  1234  				ioVar.Type = typeVar
  1235  			}
  1236  		}
  1237  	}
  1238  
  1239  	return nil
  1240  }
  1241  
  1242  // BasicMediaObject ...
  1243  type BasicMediaObject interface {
  1244  	AsImageObject() (*ImageObject, bool)
  1245  	AsVideoObject() (*VideoObject, bool)
  1246  	AsMediaObject() (*MediaObject, bool)
  1247  }
  1248  
  1249  // MediaObject ...
  1250  type MediaObject struct {
  1251  	// ContentURL - READ-ONLY; Original URL to retrieve the source (file) for the media object (e.g the source URL for the image).
  1252  	ContentURL *string `json:"contentUrl,omitempty"`
  1253  	// HostPageURL - READ-ONLY; URL of the page that hosts the media object.
  1254  	HostPageURL *string `json:"hostPageUrl,omitempty"`
  1255  	// Width - READ-ONLY; The width of the source media object, in pixels.
  1256  	Width *int32 `json:"width,omitempty"`
  1257  	// Height - READ-ONLY; The height of the source media object, in pixels.
  1258  	Height *int32 `json:"height,omitempty"`
  1259  	// ThumbnailURL - READ-ONLY; The URL to a thumbnail of the item.
  1260  	ThumbnailURL *string `json:"thumbnailUrl,omitempty"`
  1261  	// Provider - READ-ONLY; The source of the creative work.
  1262  	Provider *[]BasicThing `json:"provider,omitempty"`
  1263  	// Text - READ-ONLY
  1264  	Text *string `json:"text,omitempty"`
  1265  	// Name - READ-ONLY; The name of the thing represented by this object.
  1266  	Name *string `json:"name,omitempty"`
  1267  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
  1268  	URL *string `json:"url,omitempty"`
  1269  	// Image - READ-ONLY
  1270  	Image *ImageObject `json:"image,omitempty"`
  1271  	// Description - READ-ONLY; A short description of the item.
  1272  	Description *string `json:"description,omitempty"`
  1273  	// AlternateName - READ-ONLY
  1274  	AlternateName *string `json:"alternateName,omitempty"`
  1275  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
  1276  	BingID *string `json:"bingId,omitempty"`
  1277  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  1278  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  1279  	// ID - READ-ONLY; A String identifier.
  1280  	ID *string `json:"id,omitempty"`
  1281  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
  1282  	Type Type `json:"_type,omitempty"`
  1283  }
  1284  
  1285  func unmarshalBasicMediaObject(body []byte) (BasicMediaObject, error) {
  1286  	var m map[string]interface{}
  1287  	err := json.Unmarshal(body, &m)
  1288  	if err != nil {
  1289  		return nil, err
  1290  	}
  1291  
  1292  	switch m["_type"] {
  1293  	case string(TypeImageObject):
  1294  		var ioVar ImageObject
  1295  		err := json.Unmarshal(body, &ioVar)
  1296  		return ioVar, err
  1297  	case string(TypeVideoObject):
  1298  		var vo VideoObject
  1299  		err := json.Unmarshal(body, &vo)
  1300  		return vo, err
  1301  	default:
  1302  		var mo MediaObject
  1303  		err := json.Unmarshal(body, &mo)
  1304  		return mo, err
  1305  	}
  1306  }
  1307  func unmarshalBasicMediaObjectArray(body []byte) ([]BasicMediaObject, error) {
  1308  	var rawMessages []*json.RawMessage
  1309  	err := json.Unmarshal(body, &rawMessages)
  1310  	if err != nil {
  1311  		return nil, err
  1312  	}
  1313  
  1314  	moArray := make([]BasicMediaObject, len(rawMessages))
  1315  
  1316  	for index, rawMessage := range rawMessages {
  1317  		mo, err := unmarshalBasicMediaObject(*rawMessage)
  1318  		if err != nil {
  1319  			return nil, err
  1320  		}
  1321  		moArray[index] = mo
  1322  	}
  1323  	return moArray, nil
  1324  }
  1325  
  1326  // MarshalJSON is the custom marshaler for MediaObject.
  1327  func (mo MediaObject) MarshalJSON() ([]byte, error) {
  1328  	mo.Type = TypeMediaObject
  1329  	objectMap := make(map[string]interface{})
  1330  	if mo.Type != "" {
  1331  		objectMap["_type"] = mo.Type
  1332  	}
  1333  	return json.Marshal(objectMap)
  1334  }
  1335  
  1336  // AsImageObject is the BasicResponseBase implementation for MediaObject.
  1337  func (mo MediaObject) AsImageObject() (*ImageObject, bool) {
  1338  	return nil, false
  1339  }
  1340  
  1341  // AsVideoObject is the BasicResponseBase implementation for MediaObject.
  1342  func (mo MediaObject) AsVideoObject() (*VideoObject, bool) {
  1343  	return nil, false
  1344  }
  1345  
  1346  // AsVideos is the BasicResponseBase implementation for MediaObject.
  1347  func (mo MediaObject) AsVideos() (*Videos, bool) {
  1348  	return nil, false
  1349  }
  1350  
  1351  // AsSearchResultsAnswer is the BasicResponseBase implementation for MediaObject.
  1352  func (mo MediaObject) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  1353  	return nil, false
  1354  }
  1355  
  1356  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for MediaObject.
  1357  func (mo MediaObject) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  1358  	return nil, false
  1359  }
  1360  
  1361  // AsAnswer is the BasicResponseBase implementation for MediaObject.
  1362  func (mo MediaObject) AsAnswer() (*Answer, bool) {
  1363  	return nil, false
  1364  }
  1365  
  1366  // AsBasicAnswer is the BasicResponseBase implementation for MediaObject.
  1367  func (mo MediaObject) AsBasicAnswer() (BasicAnswer, bool) {
  1368  	return nil, false
  1369  }
  1370  
  1371  // AsMediaObject is the BasicResponseBase implementation for MediaObject.
  1372  func (mo MediaObject) AsMediaObject() (*MediaObject, bool) {
  1373  	return &mo, true
  1374  }
  1375  
  1376  // AsBasicMediaObject is the BasicResponseBase implementation for MediaObject.
  1377  func (mo MediaObject) AsBasicMediaObject() (BasicMediaObject, bool) {
  1378  	return &mo, true
  1379  }
  1380  
  1381  // AsResponse is the BasicResponseBase implementation for MediaObject.
  1382  func (mo MediaObject) AsResponse() (*Response, bool) {
  1383  	return nil, false
  1384  }
  1385  
  1386  // AsBasicResponse is the BasicResponseBase implementation for MediaObject.
  1387  func (mo MediaObject) AsBasicResponse() (BasicResponse, bool) {
  1388  	return &mo, true
  1389  }
  1390  
  1391  // AsThing is the BasicResponseBase implementation for MediaObject.
  1392  func (mo MediaObject) AsThing() (*Thing, bool) {
  1393  	return nil, false
  1394  }
  1395  
  1396  // AsBasicThing is the BasicResponseBase implementation for MediaObject.
  1397  func (mo MediaObject) AsBasicThing() (BasicThing, bool) {
  1398  	return &mo, true
  1399  }
  1400  
  1401  // AsCreativeWork is the BasicResponseBase implementation for MediaObject.
  1402  func (mo MediaObject) AsCreativeWork() (*CreativeWork, bool) {
  1403  	return nil, false
  1404  }
  1405  
  1406  // AsBasicCreativeWork is the BasicResponseBase implementation for MediaObject.
  1407  func (mo MediaObject) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  1408  	return &mo, true
  1409  }
  1410  
  1411  // AsIdentifiable is the BasicResponseBase implementation for MediaObject.
  1412  func (mo MediaObject) AsIdentifiable() (*Identifiable, bool) {
  1413  	return nil, false
  1414  }
  1415  
  1416  // AsBasicIdentifiable is the BasicResponseBase implementation for MediaObject.
  1417  func (mo MediaObject) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  1418  	return &mo, true
  1419  }
  1420  
  1421  // AsErrorResponse is the BasicResponseBase implementation for MediaObject.
  1422  func (mo MediaObject) AsErrorResponse() (*ErrorResponse, bool) {
  1423  	return nil, false
  1424  }
  1425  
  1426  // AsTrendingVideos is the BasicResponseBase implementation for MediaObject.
  1427  func (mo MediaObject) AsTrendingVideos() (*TrendingVideos, bool) {
  1428  	return nil, false
  1429  }
  1430  
  1431  // AsVideoDetails is the BasicResponseBase implementation for MediaObject.
  1432  func (mo MediaObject) AsVideoDetails() (*VideoDetails, bool) {
  1433  	return nil, false
  1434  }
  1435  
  1436  // AsResponseBase is the BasicResponseBase implementation for MediaObject.
  1437  func (mo MediaObject) AsResponseBase() (*ResponseBase, bool) {
  1438  	return nil, false
  1439  }
  1440  
  1441  // AsBasicResponseBase is the BasicResponseBase implementation for MediaObject.
  1442  func (mo MediaObject) AsBasicResponseBase() (BasicResponseBase, bool) {
  1443  	return &mo, true
  1444  }
  1445  
  1446  // UnmarshalJSON is the custom unmarshaler for MediaObject struct.
  1447  func (mo *MediaObject) UnmarshalJSON(body []byte) error {
  1448  	var m map[string]*json.RawMessage
  1449  	err := json.Unmarshal(body, &m)
  1450  	if err != nil {
  1451  		return err
  1452  	}
  1453  	for k, v := range m {
  1454  		switch k {
  1455  		case "contentUrl":
  1456  			if v != nil {
  1457  				var contentURL string
  1458  				err = json.Unmarshal(*v, &contentURL)
  1459  				if err != nil {
  1460  					return err
  1461  				}
  1462  				mo.ContentURL = &contentURL
  1463  			}
  1464  		case "hostPageUrl":
  1465  			if v != nil {
  1466  				var hostPageURL string
  1467  				err = json.Unmarshal(*v, &hostPageURL)
  1468  				if err != nil {
  1469  					return err
  1470  				}
  1471  				mo.HostPageURL = &hostPageURL
  1472  			}
  1473  		case "width":
  1474  			if v != nil {
  1475  				var width int32
  1476  				err = json.Unmarshal(*v, &width)
  1477  				if err != nil {
  1478  					return err
  1479  				}
  1480  				mo.Width = &width
  1481  			}
  1482  		case "height":
  1483  			if v != nil {
  1484  				var height int32
  1485  				err = json.Unmarshal(*v, &height)
  1486  				if err != nil {
  1487  					return err
  1488  				}
  1489  				mo.Height = &height
  1490  			}
  1491  		case "thumbnailUrl":
  1492  			if v != nil {
  1493  				var thumbnailURL string
  1494  				err = json.Unmarshal(*v, &thumbnailURL)
  1495  				if err != nil {
  1496  					return err
  1497  				}
  1498  				mo.ThumbnailURL = &thumbnailURL
  1499  			}
  1500  		case "provider":
  1501  			if v != nil {
  1502  				provider, err := unmarshalBasicThingArray(*v)
  1503  				if err != nil {
  1504  					return err
  1505  				}
  1506  				mo.Provider = &provider
  1507  			}
  1508  		case "text":
  1509  			if v != nil {
  1510  				var textVar string
  1511  				err = json.Unmarshal(*v, &textVar)
  1512  				if err != nil {
  1513  					return err
  1514  				}
  1515  				mo.Text = &textVar
  1516  			}
  1517  		case "name":
  1518  			if v != nil {
  1519  				var name string
  1520  				err = json.Unmarshal(*v, &name)
  1521  				if err != nil {
  1522  					return err
  1523  				}
  1524  				mo.Name = &name
  1525  			}
  1526  		case "url":
  1527  			if v != nil {
  1528  				var URL string
  1529  				err = json.Unmarshal(*v, &URL)
  1530  				if err != nil {
  1531  					return err
  1532  				}
  1533  				mo.URL = &URL
  1534  			}
  1535  		case "image":
  1536  			if v != nil {
  1537  				var imageVar ImageObject
  1538  				err = json.Unmarshal(*v, &imageVar)
  1539  				if err != nil {
  1540  					return err
  1541  				}
  1542  				mo.Image = &imageVar
  1543  			}
  1544  		case "description":
  1545  			if v != nil {
  1546  				var description string
  1547  				err = json.Unmarshal(*v, &description)
  1548  				if err != nil {
  1549  					return err
  1550  				}
  1551  				mo.Description = &description
  1552  			}
  1553  		case "alternateName":
  1554  			if v != nil {
  1555  				var alternateName string
  1556  				err = json.Unmarshal(*v, &alternateName)
  1557  				if err != nil {
  1558  					return err
  1559  				}
  1560  				mo.AlternateName = &alternateName
  1561  			}
  1562  		case "bingId":
  1563  			if v != nil {
  1564  				var bingID string
  1565  				err = json.Unmarshal(*v, &bingID)
  1566  				if err != nil {
  1567  					return err
  1568  				}
  1569  				mo.BingID = &bingID
  1570  			}
  1571  		case "webSearchUrl":
  1572  			if v != nil {
  1573  				var webSearchURL string
  1574  				err = json.Unmarshal(*v, &webSearchURL)
  1575  				if err != nil {
  1576  					return err
  1577  				}
  1578  				mo.WebSearchURL = &webSearchURL
  1579  			}
  1580  		case "id":
  1581  			if v != nil {
  1582  				var ID string
  1583  				err = json.Unmarshal(*v, &ID)
  1584  				if err != nil {
  1585  					return err
  1586  				}
  1587  				mo.ID = &ID
  1588  			}
  1589  		case "_type":
  1590  			if v != nil {
  1591  				var typeVar Type
  1592  				err = json.Unmarshal(*v, &typeVar)
  1593  				if err != nil {
  1594  					return err
  1595  				}
  1596  				mo.Type = typeVar
  1597  			}
  1598  		}
  1599  	}
  1600  
  1601  	return nil
  1602  }
  1603  
  1604  // PivotSuggestions ...
  1605  type PivotSuggestions struct {
  1606  	Pivot       *string  `json:"pivot,omitempty"`
  1607  	Suggestions *[]Query `json:"suggestions,omitempty"`
  1608  }
  1609  
  1610  // Query defines a search query.
  1611  type Query struct {
  1612  	// Text - The query string. Use this string as the query term in a new search request.
  1613  	Text *string `json:"text,omitempty"`
  1614  	// 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
  1615  	DisplayText *string `json:"displayText,omitempty"`
  1616  	// 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.
  1617  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  1618  	// SearchLink - READ-ONLY
  1619  	SearchLink *string `json:"searchLink,omitempty"`
  1620  	// Thumbnail - READ-ONLY
  1621  	Thumbnail *ImageObject `json:"thumbnail,omitempty"`
  1622  }
  1623  
  1624  // MarshalJSON is the custom marshaler for Query.
  1625  func (q Query) MarshalJSON() ([]byte, error) {
  1626  	objectMap := make(map[string]interface{})
  1627  	if q.Text != nil {
  1628  		objectMap["text"] = q.Text
  1629  	}
  1630  	return json.Marshal(objectMap)
  1631  }
  1632  
  1633  // QueryContext defines the query context that Bing used for the request.
  1634  type QueryContext struct {
  1635  	// OriginalQuery - The query string as specified in the request.
  1636  	OriginalQuery *string `json:"originalQuery,omitempty"`
  1637  	// 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.
  1638  	AlteredQuery *string `json:"alteredQuery,omitempty"`
  1639  	// 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.
  1640  	AlterationOverrideQuery *string `json:"alterationOverrideQuery,omitempty"`
  1641  	// 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.
  1642  	AdultIntent *bool `json:"adultIntent,omitempty"`
  1643  	// 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".
  1644  	AskUserForLocation *bool `json:"askUserForLocation,omitempty"`
  1645  	// IsTransactional - READ-ONLY
  1646  	IsTransactional *bool `json:"isTransactional,omitempty"`
  1647  }
  1648  
  1649  // MarshalJSON is the custom marshaler for QueryContext.
  1650  func (qc QueryContext) MarshalJSON() ([]byte, error) {
  1651  	objectMap := make(map[string]interface{})
  1652  	if qc.OriginalQuery != nil {
  1653  		objectMap["originalQuery"] = qc.OriginalQuery
  1654  	}
  1655  	return json.Marshal(objectMap)
  1656  }
  1657  
  1658  // BasicResponse defines a response. All schemas that could be returned at the root of a response should inherit from
  1659  // this
  1660  type BasicResponse interface {
  1661  	AsImageObject() (*ImageObject, bool)
  1662  	AsVideoObject() (*VideoObject, bool)
  1663  	AsVideos() (*Videos, bool)
  1664  	AsSearchResultsAnswer() (*SearchResultsAnswer, bool)
  1665  	AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool)
  1666  	AsAnswer() (*Answer, bool)
  1667  	AsBasicAnswer() (BasicAnswer, bool)
  1668  	AsMediaObject() (*MediaObject, bool)
  1669  	AsBasicMediaObject() (BasicMediaObject, bool)
  1670  	AsThing() (*Thing, bool)
  1671  	AsBasicThing() (BasicThing, bool)
  1672  	AsCreativeWork() (*CreativeWork, bool)
  1673  	AsBasicCreativeWork() (BasicCreativeWork, bool)
  1674  	AsErrorResponse() (*ErrorResponse, bool)
  1675  	AsTrendingVideos() (*TrendingVideos, bool)
  1676  	AsVideoDetails() (*VideoDetails, bool)
  1677  	AsResponse() (*Response, bool)
  1678  }
  1679  
  1680  // Response defines a response. All schemas that could be returned at the root of a response should inherit
  1681  // from this
  1682  type Response struct {
  1683  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  1684  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  1685  	// ID - READ-ONLY; A String identifier.
  1686  	ID *string `json:"id,omitempty"`
  1687  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
  1688  	Type Type `json:"_type,omitempty"`
  1689  }
  1690  
  1691  func unmarshalBasicResponse(body []byte) (BasicResponse, error) {
  1692  	var m map[string]interface{}
  1693  	err := json.Unmarshal(body, &m)
  1694  	if err != nil {
  1695  		return nil, err
  1696  	}
  1697  
  1698  	switch m["_type"] {
  1699  	case string(TypeImageObject):
  1700  		var ioVar ImageObject
  1701  		err := json.Unmarshal(body, &ioVar)
  1702  		return ioVar, err
  1703  	case string(TypeVideoObject):
  1704  		var vo VideoObject
  1705  		err := json.Unmarshal(body, &vo)
  1706  		return vo, err
  1707  	case string(TypeVideos):
  1708  		var vVar Videos
  1709  		err := json.Unmarshal(body, &vVar)
  1710  		return vVar, err
  1711  	case string(TypeSearchResultsAnswer):
  1712  		var sra SearchResultsAnswer
  1713  		err := json.Unmarshal(body, &sra)
  1714  		return sra, err
  1715  	case string(TypeAnswer):
  1716  		var a Answer
  1717  		err := json.Unmarshal(body, &a)
  1718  		return a, err
  1719  	case string(TypeMediaObject):
  1720  		var mo MediaObject
  1721  		err := json.Unmarshal(body, &mo)
  1722  		return mo, err
  1723  	case string(TypeThing):
  1724  		var t Thing
  1725  		err := json.Unmarshal(body, &t)
  1726  		return t, err
  1727  	case string(TypeCreativeWork):
  1728  		var cw CreativeWork
  1729  		err := json.Unmarshal(body, &cw)
  1730  		return cw, err
  1731  	case string(TypeErrorResponse):
  1732  		var er ErrorResponse
  1733  		err := json.Unmarshal(body, &er)
  1734  		return er, err
  1735  	case string(TypeTrendingVideos):
  1736  		var tv TrendingVideos
  1737  		err := json.Unmarshal(body, &tv)
  1738  		return tv, err
  1739  	case string(TypeVideoDetails):
  1740  		var vd VideoDetails
  1741  		err := json.Unmarshal(body, &vd)
  1742  		return vd, err
  1743  	default:
  1744  		var r Response
  1745  		err := json.Unmarshal(body, &r)
  1746  		return r, err
  1747  	}
  1748  }
  1749  func unmarshalBasicResponseArray(body []byte) ([]BasicResponse, error) {
  1750  	var rawMessages []*json.RawMessage
  1751  	err := json.Unmarshal(body, &rawMessages)
  1752  	if err != nil {
  1753  		return nil, err
  1754  	}
  1755  
  1756  	rArray := make([]BasicResponse, len(rawMessages))
  1757  
  1758  	for index, rawMessage := range rawMessages {
  1759  		r, err := unmarshalBasicResponse(*rawMessage)
  1760  		if err != nil {
  1761  			return nil, err
  1762  		}
  1763  		rArray[index] = r
  1764  	}
  1765  	return rArray, nil
  1766  }
  1767  
  1768  // MarshalJSON is the custom marshaler for Response.
  1769  func (r Response) MarshalJSON() ([]byte, error) {
  1770  	r.Type = TypeResponse
  1771  	objectMap := make(map[string]interface{})
  1772  	if r.Type != "" {
  1773  		objectMap["_type"] = r.Type
  1774  	}
  1775  	return json.Marshal(objectMap)
  1776  }
  1777  
  1778  // AsImageObject is the BasicResponseBase implementation for Response.
  1779  func (r Response) AsImageObject() (*ImageObject, bool) {
  1780  	return nil, false
  1781  }
  1782  
  1783  // AsVideoObject is the BasicResponseBase implementation for Response.
  1784  func (r Response) AsVideoObject() (*VideoObject, bool) {
  1785  	return nil, false
  1786  }
  1787  
  1788  // AsVideos is the BasicResponseBase implementation for Response.
  1789  func (r Response) AsVideos() (*Videos, bool) {
  1790  	return nil, false
  1791  }
  1792  
  1793  // AsSearchResultsAnswer is the BasicResponseBase implementation for Response.
  1794  func (r Response) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  1795  	return nil, false
  1796  }
  1797  
  1798  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Response.
  1799  func (r Response) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  1800  	return nil, false
  1801  }
  1802  
  1803  // AsAnswer is the BasicResponseBase implementation for Response.
  1804  func (r Response) AsAnswer() (*Answer, bool) {
  1805  	return nil, false
  1806  }
  1807  
  1808  // AsBasicAnswer is the BasicResponseBase implementation for Response.
  1809  func (r Response) AsBasicAnswer() (BasicAnswer, bool) {
  1810  	return nil, false
  1811  }
  1812  
  1813  // AsMediaObject is the BasicResponseBase implementation for Response.
  1814  func (r Response) AsMediaObject() (*MediaObject, bool) {
  1815  	return nil, false
  1816  }
  1817  
  1818  // AsBasicMediaObject is the BasicResponseBase implementation for Response.
  1819  func (r Response) AsBasicMediaObject() (BasicMediaObject, bool) {
  1820  	return nil, false
  1821  }
  1822  
  1823  // AsResponse is the BasicResponseBase implementation for Response.
  1824  func (r Response) AsResponse() (*Response, bool) {
  1825  	return &r, true
  1826  }
  1827  
  1828  // AsBasicResponse is the BasicResponseBase implementation for Response.
  1829  func (r Response) AsBasicResponse() (BasicResponse, bool) {
  1830  	return &r, true
  1831  }
  1832  
  1833  // AsThing is the BasicResponseBase implementation for Response.
  1834  func (r Response) AsThing() (*Thing, bool) {
  1835  	return nil, false
  1836  }
  1837  
  1838  // AsBasicThing is the BasicResponseBase implementation for Response.
  1839  func (r Response) AsBasicThing() (BasicThing, bool) {
  1840  	return nil, false
  1841  }
  1842  
  1843  // AsCreativeWork is the BasicResponseBase implementation for Response.
  1844  func (r Response) AsCreativeWork() (*CreativeWork, bool) {
  1845  	return nil, false
  1846  }
  1847  
  1848  // AsBasicCreativeWork is the BasicResponseBase implementation for Response.
  1849  func (r Response) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  1850  	return nil, false
  1851  }
  1852  
  1853  // AsIdentifiable is the BasicResponseBase implementation for Response.
  1854  func (r Response) AsIdentifiable() (*Identifiable, bool) {
  1855  	return nil, false
  1856  }
  1857  
  1858  // AsBasicIdentifiable is the BasicResponseBase implementation for Response.
  1859  func (r Response) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  1860  	return &r, true
  1861  }
  1862  
  1863  // AsErrorResponse is the BasicResponseBase implementation for Response.
  1864  func (r Response) AsErrorResponse() (*ErrorResponse, bool) {
  1865  	return nil, false
  1866  }
  1867  
  1868  // AsTrendingVideos is the BasicResponseBase implementation for Response.
  1869  func (r Response) AsTrendingVideos() (*TrendingVideos, bool) {
  1870  	return nil, false
  1871  }
  1872  
  1873  // AsVideoDetails is the BasicResponseBase implementation for Response.
  1874  func (r Response) AsVideoDetails() (*VideoDetails, bool) {
  1875  	return nil, false
  1876  }
  1877  
  1878  // AsResponseBase is the BasicResponseBase implementation for Response.
  1879  func (r Response) AsResponseBase() (*ResponseBase, bool) {
  1880  	return nil, false
  1881  }
  1882  
  1883  // AsBasicResponseBase is the BasicResponseBase implementation for Response.
  1884  func (r Response) AsBasicResponseBase() (BasicResponseBase, bool) {
  1885  	return &r, true
  1886  }
  1887  
  1888  // BasicResponseBase ...
  1889  type BasicResponseBase interface {
  1890  	AsImageObject() (*ImageObject, bool)
  1891  	AsVideoObject() (*VideoObject, bool)
  1892  	AsVideos() (*Videos, bool)
  1893  	AsSearchResultsAnswer() (*SearchResultsAnswer, bool)
  1894  	AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool)
  1895  	AsAnswer() (*Answer, bool)
  1896  	AsBasicAnswer() (BasicAnswer, bool)
  1897  	AsMediaObject() (*MediaObject, bool)
  1898  	AsBasicMediaObject() (BasicMediaObject, bool)
  1899  	AsResponse() (*Response, bool)
  1900  	AsBasicResponse() (BasicResponse, bool)
  1901  	AsThing() (*Thing, bool)
  1902  	AsBasicThing() (BasicThing, bool)
  1903  	AsCreativeWork() (*CreativeWork, bool)
  1904  	AsBasicCreativeWork() (BasicCreativeWork, bool)
  1905  	AsIdentifiable() (*Identifiable, bool)
  1906  	AsBasicIdentifiable() (BasicIdentifiable, bool)
  1907  	AsErrorResponse() (*ErrorResponse, bool)
  1908  	AsTrendingVideos() (*TrendingVideos, bool)
  1909  	AsVideoDetails() (*VideoDetails, bool)
  1910  	AsResponseBase() (*ResponseBase, bool)
  1911  }
  1912  
  1913  // ResponseBase ...
  1914  type ResponseBase struct {
  1915  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
  1916  	Type Type `json:"_type,omitempty"`
  1917  }
  1918  
  1919  func unmarshalBasicResponseBase(body []byte) (BasicResponseBase, error) {
  1920  	var m map[string]interface{}
  1921  	err := json.Unmarshal(body, &m)
  1922  	if err != nil {
  1923  		return nil, err
  1924  	}
  1925  
  1926  	switch m["_type"] {
  1927  	case string(TypeImageObject):
  1928  		var ioVar ImageObject
  1929  		err := json.Unmarshal(body, &ioVar)
  1930  		return ioVar, err
  1931  	case string(TypeVideoObject):
  1932  		var vo VideoObject
  1933  		err := json.Unmarshal(body, &vo)
  1934  		return vo, err
  1935  	case string(TypeVideos):
  1936  		var vVar Videos
  1937  		err := json.Unmarshal(body, &vVar)
  1938  		return vVar, err
  1939  	case string(TypeSearchResultsAnswer):
  1940  		var sra SearchResultsAnswer
  1941  		err := json.Unmarshal(body, &sra)
  1942  		return sra, err
  1943  	case string(TypeAnswer):
  1944  		var a Answer
  1945  		err := json.Unmarshal(body, &a)
  1946  		return a, err
  1947  	case string(TypeMediaObject):
  1948  		var mo MediaObject
  1949  		err := json.Unmarshal(body, &mo)
  1950  		return mo, err
  1951  	case string(TypeResponse):
  1952  		var r Response
  1953  		err := json.Unmarshal(body, &r)
  1954  		return r, err
  1955  	case string(TypeThing):
  1956  		var t Thing
  1957  		err := json.Unmarshal(body, &t)
  1958  		return t, err
  1959  	case string(TypeCreativeWork):
  1960  		var cw CreativeWork
  1961  		err := json.Unmarshal(body, &cw)
  1962  		return cw, err
  1963  	case string(TypeIdentifiable):
  1964  		var i Identifiable
  1965  		err := json.Unmarshal(body, &i)
  1966  		return i, err
  1967  	case string(TypeErrorResponse):
  1968  		var er ErrorResponse
  1969  		err := json.Unmarshal(body, &er)
  1970  		return er, err
  1971  	case string(TypeTrendingVideos):
  1972  		var tv TrendingVideos
  1973  		err := json.Unmarshal(body, &tv)
  1974  		return tv, err
  1975  	case string(TypeVideoDetails):
  1976  		var vd VideoDetails
  1977  		err := json.Unmarshal(body, &vd)
  1978  		return vd, err
  1979  	default:
  1980  		var rb ResponseBase
  1981  		err := json.Unmarshal(body, &rb)
  1982  		return rb, err
  1983  	}
  1984  }
  1985  func unmarshalBasicResponseBaseArray(body []byte) ([]BasicResponseBase, error) {
  1986  	var rawMessages []*json.RawMessage
  1987  	err := json.Unmarshal(body, &rawMessages)
  1988  	if err != nil {
  1989  		return nil, err
  1990  	}
  1991  
  1992  	rbArray := make([]BasicResponseBase, len(rawMessages))
  1993  
  1994  	for index, rawMessage := range rawMessages {
  1995  		rb, err := unmarshalBasicResponseBase(*rawMessage)
  1996  		if err != nil {
  1997  			return nil, err
  1998  		}
  1999  		rbArray[index] = rb
  2000  	}
  2001  	return rbArray, nil
  2002  }
  2003  
  2004  // MarshalJSON is the custom marshaler for ResponseBase.
  2005  func (rb ResponseBase) MarshalJSON() ([]byte, error) {
  2006  	rb.Type = TypeResponseBase
  2007  	objectMap := make(map[string]interface{})
  2008  	if rb.Type != "" {
  2009  		objectMap["_type"] = rb.Type
  2010  	}
  2011  	return json.Marshal(objectMap)
  2012  }
  2013  
  2014  // AsImageObject is the BasicResponseBase implementation for ResponseBase.
  2015  func (rb ResponseBase) AsImageObject() (*ImageObject, bool) {
  2016  	return nil, false
  2017  }
  2018  
  2019  // AsVideoObject is the BasicResponseBase implementation for ResponseBase.
  2020  func (rb ResponseBase) AsVideoObject() (*VideoObject, bool) {
  2021  	return nil, false
  2022  }
  2023  
  2024  // AsVideos is the BasicResponseBase implementation for ResponseBase.
  2025  func (rb ResponseBase) AsVideos() (*Videos, bool) {
  2026  	return nil, false
  2027  }
  2028  
  2029  // AsSearchResultsAnswer is the BasicResponseBase implementation for ResponseBase.
  2030  func (rb ResponseBase) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  2031  	return nil, false
  2032  }
  2033  
  2034  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for ResponseBase.
  2035  func (rb ResponseBase) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  2036  	return nil, false
  2037  }
  2038  
  2039  // AsAnswer is the BasicResponseBase implementation for ResponseBase.
  2040  func (rb ResponseBase) AsAnswer() (*Answer, bool) {
  2041  	return nil, false
  2042  }
  2043  
  2044  // AsBasicAnswer is the BasicResponseBase implementation for ResponseBase.
  2045  func (rb ResponseBase) AsBasicAnswer() (BasicAnswer, bool) {
  2046  	return nil, false
  2047  }
  2048  
  2049  // AsMediaObject is the BasicResponseBase implementation for ResponseBase.
  2050  func (rb ResponseBase) AsMediaObject() (*MediaObject, bool) {
  2051  	return nil, false
  2052  }
  2053  
  2054  // AsBasicMediaObject is the BasicResponseBase implementation for ResponseBase.
  2055  func (rb ResponseBase) AsBasicMediaObject() (BasicMediaObject, bool) {
  2056  	return nil, false
  2057  }
  2058  
  2059  // AsResponse is the BasicResponseBase implementation for ResponseBase.
  2060  func (rb ResponseBase) AsResponse() (*Response, bool) {
  2061  	return nil, false
  2062  }
  2063  
  2064  // AsBasicResponse is the BasicResponseBase implementation for ResponseBase.
  2065  func (rb ResponseBase) AsBasicResponse() (BasicResponse, bool) {
  2066  	return nil, false
  2067  }
  2068  
  2069  // AsThing is the BasicResponseBase implementation for ResponseBase.
  2070  func (rb ResponseBase) AsThing() (*Thing, bool) {
  2071  	return nil, false
  2072  }
  2073  
  2074  // AsBasicThing is the BasicResponseBase implementation for ResponseBase.
  2075  func (rb ResponseBase) AsBasicThing() (BasicThing, bool) {
  2076  	return nil, false
  2077  }
  2078  
  2079  // AsCreativeWork is the BasicResponseBase implementation for ResponseBase.
  2080  func (rb ResponseBase) AsCreativeWork() (*CreativeWork, bool) {
  2081  	return nil, false
  2082  }
  2083  
  2084  // AsBasicCreativeWork is the BasicResponseBase implementation for ResponseBase.
  2085  func (rb ResponseBase) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  2086  	return nil, false
  2087  }
  2088  
  2089  // AsIdentifiable is the BasicResponseBase implementation for ResponseBase.
  2090  func (rb ResponseBase) AsIdentifiable() (*Identifiable, bool) {
  2091  	return nil, false
  2092  }
  2093  
  2094  // AsBasicIdentifiable is the BasicResponseBase implementation for ResponseBase.
  2095  func (rb ResponseBase) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  2096  	return nil, false
  2097  }
  2098  
  2099  // AsErrorResponse is the BasicResponseBase implementation for ResponseBase.
  2100  func (rb ResponseBase) AsErrorResponse() (*ErrorResponse, bool) {
  2101  	return nil, false
  2102  }
  2103  
  2104  // AsTrendingVideos is the BasicResponseBase implementation for ResponseBase.
  2105  func (rb ResponseBase) AsTrendingVideos() (*TrendingVideos, bool) {
  2106  	return nil, false
  2107  }
  2108  
  2109  // AsVideoDetails is the BasicResponseBase implementation for ResponseBase.
  2110  func (rb ResponseBase) AsVideoDetails() (*VideoDetails, bool) {
  2111  	return nil, false
  2112  }
  2113  
  2114  // AsResponseBase is the BasicResponseBase implementation for ResponseBase.
  2115  func (rb ResponseBase) AsResponseBase() (*ResponseBase, bool) {
  2116  	return &rb, true
  2117  }
  2118  
  2119  // AsBasicResponseBase is the BasicResponseBase implementation for ResponseBase.
  2120  func (rb ResponseBase) AsBasicResponseBase() (BasicResponseBase, bool) {
  2121  	return &rb, true
  2122  }
  2123  
  2124  // BasicSearchResultsAnswer ...
  2125  type BasicSearchResultsAnswer interface {
  2126  	AsVideos() (*Videos, bool)
  2127  	AsSearchResultsAnswer() (*SearchResultsAnswer, bool)
  2128  }
  2129  
  2130  // SearchResultsAnswer ...
  2131  type SearchResultsAnswer struct {
  2132  	// 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.
  2133  	TotalEstimatedMatches *int64 `json:"totalEstimatedMatches,omitempty"`
  2134  	// IsFamilyFriendly - READ-ONLY
  2135  	IsFamilyFriendly *bool `json:"isFamilyFriendly,omitempty"`
  2136  	// FollowUpQueries - READ-ONLY
  2137  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
  2138  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  2139  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  2140  	// ID - READ-ONLY; A String identifier.
  2141  	ID *string `json:"id,omitempty"`
  2142  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
  2143  	Type Type `json:"_type,omitempty"`
  2144  }
  2145  
  2146  func unmarshalBasicSearchResultsAnswer(body []byte) (BasicSearchResultsAnswer, error) {
  2147  	var m map[string]interface{}
  2148  	err := json.Unmarshal(body, &m)
  2149  	if err != nil {
  2150  		return nil, err
  2151  	}
  2152  
  2153  	switch m["_type"] {
  2154  	case string(TypeVideos):
  2155  		var vVar Videos
  2156  		err := json.Unmarshal(body, &vVar)
  2157  		return vVar, err
  2158  	default:
  2159  		var sra SearchResultsAnswer
  2160  		err := json.Unmarshal(body, &sra)
  2161  		return sra, err
  2162  	}
  2163  }
  2164  func unmarshalBasicSearchResultsAnswerArray(body []byte) ([]BasicSearchResultsAnswer, error) {
  2165  	var rawMessages []*json.RawMessage
  2166  	err := json.Unmarshal(body, &rawMessages)
  2167  	if err != nil {
  2168  		return nil, err
  2169  	}
  2170  
  2171  	sraArray := make([]BasicSearchResultsAnswer, len(rawMessages))
  2172  
  2173  	for index, rawMessage := range rawMessages {
  2174  		sra, err := unmarshalBasicSearchResultsAnswer(*rawMessage)
  2175  		if err != nil {
  2176  			return nil, err
  2177  		}
  2178  		sraArray[index] = sra
  2179  	}
  2180  	return sraArray, nil
  2181  }
  2182  
  2183  // MarshalJSON is the custom marshaler for SearchResultsAnswer.
  2184  func (sra SearchResultsAnswer) MarshalJSON() ([]byte, error) {
  2185  	sra.Type = TypeSearchResultsAnswer
  2186  	objectMap := make(map[string]interface{})
  2187  	if sra.Type != "" {
  2188  		objectMap["_type"] = sra.Type
  2189  	}
  2190  	return json.Marshal(objectMap)
  2191  }
  2192  
  2193  // AsImageObject is the BasicResponseBase implementation for SearchResultsAnswer.
  2194  func (sra SearchResultsAnswer) AsImageObject() (*ImageObject, bool) {
  2195  	return nil, false
  2196  }
  2197  
  2198  // AsVideoObject is the BasicResponseBase implementation for SearchResultsAnswer.
  2199  func (sra SearchResultsAnswer) AsVideoObject() (*VideoObject, bool) {
  2200  	return nil, false
  2201  }
  2202  
  2203  // AsVideos is the BasicResponseBase implementation for SearchResultsAnswer.
  2204  func (sra SearchResultsAnswer) AsVideos() (*Videos, bool) {
  2205  	return nil, false
  2206  }
  2207  
  2208  // AsSearchResultsAnswer is the BasicResponseBase implementation for SearchResultsAnswer.
  2209  func (sra SearchResultsAnswer) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  2210  	return &sra, true
  2211  }
  2212  
  2213  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for SearchResultsAnswer.
  2214  func (sra SearchResultsAnswer) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  2215  	return &sra, true
  2216  }
  2217  
  2218  // AsAnswer is the BasicResponseBase implementation for SearchResultsAnswer.
  2219  func (sra SearchResultsAnswer) AsAnswer() (*Answer, bool) {
  2220  	return nil, false
  2221  }
  2222  
  2223  // AsBasicAnswer is the BasicResponseBase implementation for SearchResultsAnswer.
  2224  func (sra SearchResultsAnswer) AsBasicAnswer() (BasicAnswer, bool) {
  2225  	return &sra, true
  2226  }
  2227  
  2228  // AsMediaObject is the BasicResponseBase implementation for SearchResultsAnswer.
  2229  func (sra SearchResultsAnswer) AsMediaObject() (*MediaObject, bool) {
  2230  	return nil, false
  2231  }
  2232  
  2233  // AsBasicMediaObject is the BasicResponseBase implementation for SearchResultsAnswer.
  2234  func (sra SearchResultsAnswer) AsBasicMediaObject() (BasicMediaObject, bool) {
  2235  	return nil, false
  2236  }
  2237  
  2238  // AsResponse is the BasicResponseBase implementation for SearchResultsAnswer.
  2239  func (sra SearchResultsAnswer) AsResponse() (*Response, bool) {
  2240  	return nil, false
  2241  }
  2242  
  2243  // AsBasicResponse is the BasicResponseBase implementation for SearchResultsAnswer.
  2244  func (sra SearchResultsAnswer) AsBasicResponse() (BasicResponse, bool) {
  2245  	return &sra, true
  2246  }
  2247  
  2248  // AsThing is the BasicResponseBase implementation for SearchResultsAnswer.
  2249  func (sra SearchResultsAnswer) AsThing() (*Thing, bool) {
  2250  	return nil, false
  2251  }
  2252  
  2253  // AsBasicThing is the BasicResponseBase implementation for SearchResultsAnswer.
  2254  func (sra SearchResultsAnswer) AsBasicThing() (BasicThing, bool) {
  2255  	return nil, false
  2256  }
  2257  
  2258  // AsCreativeWork is the BasicResponseBase implementation for SearchResultsAnswer.
  2259  func (sra SearchResultsAnswer) AsCreativeWork() (*CreativeWork, bool) {
  2260  	return nil, false
  2261  }
  2262  
  2263  // AsBasicCreativeWork is the BasicResponseBase implementation for SearchResultsAnswer.
  2264  func (sra SearchResultsAnswer) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  2265  	return nil, false
  2266  }
  2267  
  2268  // AsIdentifiable is the BasicResponseBase implementation for SearchResultsAnswer.
  2269  func (sra SearchResultsAnswer) AsIdentifiable() (*Identifiable, bool) {
  2270  	return nil, false
  2271  }
  2272  
  2273  // AsBasicIdentifiable is the BasicResponseBase implementation for SearchResultsAnswer.
  2274  func (sra SearchResultsAnswer) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  2275  	return &sra, true
  2276  }
  2277  
  2278  // AsErrorResponse is the BasicResponseBase implementation for SearchResultsAnswer.
  2279  func (sra SearchResultsAnswer) AsErrorResponse() (*ErrorResponse, bool) {
  2280  	return nil, false
  2281  }
  2282  
  2283  // AsTrendingVideos is the BasicResponseBase implementation for SearchResultsAnswer.
  2284  func (sra SearchResultsAnswer) AsTrendingVideos() (*TrendingVideos, bool) {
  2285  	return nil, false
  2286  }
  2287  
  2288  // AsVideoDetails is the BasicResponseBase implementation for SearchResultsAnswer.
  2289  func (sra SearchResultsAnswer) AsVideoDetails() (*VideoDetails, bool) {
  2290  	return nil, false
  2291  }
  2292  
  2293  // AsResponseBase is the BasicResponseBase implementation for SearchResultsAnswer.
  2294  func (sra SearchResultsAnswer) AsResponseBase() (*ResponseBase, bool) {
  2295  	return nil, false
  2296  }
  2297  
  2298  // AsBasicResponseBase is the BasicResponseBase implementation for SearchResultsAnswer.
  2299  func (sra SearchResultsAnswer) AsBasicResponseBase() (BasicResponseBase, bool) {
  2300  	return &sra, true
  2301  }
  2302  
  2303  // BasicThing ...
  2304  type BasicThing interface {
  2305  	AsImageObject() (*ImageObject, bool)
  2306  	AsVideoObject() (*VideoObject, bool)
  2307  	AsMediaObject() (*MediaObject, bool)
  2308  	AsBasicMediaObject() (BasicMediaObject, bool)
  2309  	AsCreativeWork() (*CreativeWork, bool)
  2310  	AsBasicCreativeWork() (BasicCreativeWork, bool)
  2311  	AsThing() (*Thing, bool)
  2312  }
  2313  
  2314  // Thing ...
  2315  type Thing struct {
  2316  	// Name - READ-ONLY; The name of the thing represented by this object.
  2317  	Name *string `json:"name,omitempty"`
  2318  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
  2319  	URL *string `json:"url,omitempty"`
  2320  	// Image - READ-ONLY
  2321  	Image *ImageObject `json:"image,omitempty"`
  2322  	// Description - READ-ONLY; A short description of the item.
  2323  	Description *string `json:"description,omitempty"`
  2324  	// AlternateName - READ-ONLY
  2325  	AlternateName *string `json:"alternateName,omitempty"`
  2326  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
  2327  	BingID *string `json:"bingId,omitempty"`
  2328  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  2329  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  2330  	// ID - READ-ONLY; A String identifier.
  2331  	ID *string `json:"id,omitempty"`
  2332  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
  2333  	Type Type `json:"_type,omitempty"`
  2334  }
  2335  
  2336  func unmarshalBasicThing(body []byte) (BasicThing, error) {
  2337  	var m map[string]interface{}
  2338  	err := json.Unmarshal(body, &m)
  2339  	if err != nil {
  2340  		return nil, err
  2341  	}
  2342  
  2343  	switch m["_type"] {
  2344  	case string(TypeImageObject):
  2345  		var ioVar ImageObject
  2346  		err := json.Unmarshal(body, &ioVar)
  2347  		return ioVar, err
  2348  	case string(TypeVideoObject):
  2349  		var vo VideoObject
  2350  		err := json.Unmarshal(body, &vo)
  2351  		return vo, err
  2352  	case string(TypeMediaObject):
  2353  		var mo MediaObject
  2354  		err := json.Unmarshal(body, &mo)
  2355  		return mo, err
  2356  	case string(TypeCreativeWork):
  2357  		var cw CreativeWork
  2358  		err := json.Unmarshal(body, &cw)
  2359  		return cw, err
  2360  	default:
  2361  		var t Thing
  2362  		err := json.Unmarshal(body, &t)
  2363  		return t, err
  2364  	}
  2365  }
  2366  func unmarshalBasicThingArray(body []byte) ([]BasicThing, error) {
  2367  	var rawMessages []*json.RawMessage
  2368  	err := json.Unmarshal(body, &rawMessages)
  2369  	if err != nil {
  2370  		return nil, err
  2371  	}
  2372  
  2373  	tArray := make([]BasicThing, len(rawMessages))
  2374  
  2375  	for index, rawMessage := range rawMessages {
  2376  		t, err := unmarshalBasicThing(*rawMessage)
  2377  		if err != nil {
  2378  			return nil, err
  2379  		}
  2380  		tArray[index] = t
  2381  	}
  2382  	return tArray, nil
  2383  }
  2384  
  2385  // MarshalJSON is the custom marshaler for Thing.
  2386  func (t Thing) MarshalJSON() ([]byte, error) {
  2387  	t.Type = TypeThing
  2388  	objectMap := make(map[string]interface{})
  2389  	if t.Type != "" {
  2390  		objectMap["_type"] = t.Type
  2391  	}
  2392  	return json.Marshal(objectMap)
  2393  }
  2394  
  2395  // AsImageObject is the BasicResponseBase implementation for Thing.
  2396  func (t Thing) AsImageObject() (*ImageObject, bool) {
  2397  	return nil, false
  2398  }
  2399  
  2400  // AsVideoObject is the BasicResponseBase implementation for Thing.
  2401  func (t Thing) AsVideoObject() (*VideoObject, bool) {
  2402  	return nil, false
  2403  }
  2404  
  2405  // AsVideos is the BasicResponseBase implementation for Thing.
  2406  func (t Thing) AsVideos() (*Videos, bool) {
  2407  	return nil, false
  2408  }
  2409  
  2410  // AsSearchResultsAnswer is the BasicResponseBase implementation for Thing.
  2411  func (t Thing) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  2412  	return nil, false
  2413  }
  2414  
  2415  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Thing.
  2416  func (t Thing) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  2417  	return nil, false
  2418  }
  2419  
  2420  // AsAnswer is the BasicResponseBase implementation for Thing.
  2421  func (t Thing) AsAnswer() (*Answer, bool) {
  2422  	return nil, false
  2423  }
  2424  
  2425  // AsBasicAnswer is the BasicResponseBase implementation for Thing.
  2426  func (t Thing) AsBasicAnswer() (BasicAnswer, bool) {
  2427  	return nil, false
  2428  }
  2429  
  2430  // AsMediaObject is the BasicResponseBase implementation for Thing.
  2431  func (t Thing) AsMediaObject() (*MediaObject, bool) {
  2432  	return nil, false
  2433  }
  2434  
  2435  // AsBasicMediaObject is the BasicResponseBase implementation for Thing.
  2436  func (t Thing) AsBasicMediaObject() (BasicMediaObject, bool) {
  2437  	return nil, false
  2438  }
  2439  
  2440  // AsResponse is the BasicResponseBase implementation for Thing.
  2441  func (t Thing) AsResponse() (*Response, bool) {
  2442  	return nil, false
  2443  }
  2444  
  2445  // AsBasicResponse is the BasicResponseBase implementation for Thing.
  2446  func (t Thing) AsBasicResponse() (BasicResponse, bool) {
  2447  	return &t, true
  2448  }
  2449  
  2450  // AsThing is the BasicResponseBase implementation for Thing.
  2451  func (t Thing) AsThing() (*Thing, bool) {
  2452  	return &t, true
  2453  }
  2454  
  2455  // AsBasicThing is the BasicResponseBase implementation for Thing.
  2456  func (t Thing) AsBasicThing() (BasicThing, bool) {
  2457  	return &t, true
  2458  }
  2459  
  2460  // AsCreativeWork is the BasicResponseBase implementation for Thing.
  2461  func (t Thing) AsCreativeWork() (*CreativeWork, bool) {
  2462  	return nil, false
  2463  }
  2464  
  2465  // AsBasicCreativeWork is the BasicResponseBase implementation for Thing.
  2466  func (t Thing) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  2467  	return nil, false
  2468  }
  2469  
  2470  // AsIdentifiable is the BasicResponseBase implementation for Thing.
  2471  func (t Thing) AsIdentifiable() (*Identifiable, bool) {
  2472  	return nil, false
  2473  }
  2474  
  2475  // AsBasicIdentifiable is the BasicResponseBase implementation for Thing.
  2476  func (t Thing) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  2477  	return &t, true
  2478  }
  2479  
  2480  // AsErrorResponse is the BasicResponseBase implementation for Thing.
  2481  func (t Thing) AsErrorResponse() (*ErrorResponse, bool) {
  2482  	return nil, false
  2483  }
  2484  
  2485  // AsTrendingVideos is the BasicResponseBase implementation for Thing.
  2486  func (t Thing) AsTrendingVideos() (*TrendingVideos, bool) {
  2487  	return nil, false
  2488  }
  2489  
  2490  // AsVideoDetails is the BasicResponseBase implementation for Thing.
  2491  func (t Thing) AsVideoDetails() (*VideoDetails, bool) {
  2492  	return nil, false
  2493  }
  2494  
  2495  // AsResponseBase is the BasicResponseBase implementation for Thing.
  2496  func (t Thing) AsResponseBase() (*ResponseBase, bool) {
  2497  	return nil, false
  2498  }
  2499  
  2500  // AsBasicResponseBase is the BasicResponseBase implementation for Thing.
  2501  func (t Thing) AsBasicResponseBase() (BasicResponseBase, bool) {
  2502  	return &t, true
  2503  }
  2504  
  2505  // TrendingVideos ...
  2506  type TrendingVideos struct {
  2507  	autorest.Response `json:"-"`
  2508  	BannerTiles       *[]TrendingVideosTile     `json:"bannerTiles,omitempty"`
  2509  	Categories        *[]TrendingVideosCategory `json:"categories,omitempty"`
  2510  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  2511  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  2512  	// ID - READ-ONLY; A String identifier.
  2513  	ID *string `json:"id,omitempty"`
  2514  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
  2515  	Type Type `json:"_type,omitempty"`
  2516  }
  2517  
  2518  // MarshalJSON is the custom marshaler for TrendingVideos.
  2519  func (tv TrendingVideos) MarshalJSON() ([]byte, error) {
  2520  	tv.Type = TypeTrendingVideos
  2521  	objectMap := make(map[string]interface{})
  2522  	if tv.BannerTiles != nil {
  2523  		objectMap["bannerTiles"] = tv.BannerTiles
  2524  	}
  2525  	if tv.Categories != nil {
  2526  		objectMap["categories"] = tv.Categories
  2527  	}
  2528  	if tv.Type != "" {
  2529  		objectMap["_type"] = tv.Type
  2530  	}
  2531  	return json.Marshal(objectMap)
  2532  }
  2533  
  2534  // AsImageObject is the BasicResponseBase implementation for TrendingVideos.
  2535  func (tv TrendingVideos) AsImageObject() (*ImageObject, bool) {
  2536  	return nil, false
  2537  }
  2538  
  2539  // AsVideoObject is the BasicResponseBase implementation for TrendingVideos.
  2540  func (tv TrendingVideos) AsVideoObject() (*VideoObject, bool) {
  2541  	return nil, false
  2542  }
  2543  
  2544  // AsVideos is the BasicResponseBase implementation for TrendingVideos.
  2545  func (tv TrendingVideos) AsVideos() (*Videos, bool) {
  2546  	return nil, false
  2547  }
  2548  
  2549  // AsSearchResultsAnswer is the BasicResponseBase implementation for TrendingVideos.
  2550  func (tv TrendingVideos) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  2551  	return nil, false
  2552  }
  2553  
  2554  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for TrendingVideos.
  2555  func (tv TrendingVideos) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  2556  	return nil, false
  2557  }
  2558  
  2559  // AsAnswer is the BasicResponseBase implementation for TrendingVideos.
  2560  func (tv TrendingVideos) AsAnswer() (*Answer, bool) {
  2561  	return nil, false
  2562  }
  2563  
  2564  // AsBasicAnswer is the BasicResponseBase implementation for TrendingVideos.
  2565  func (tv TrendingVideos) AsBasicAnswer() (BasicAnswer, bool) {
  2566  	return nil, false
  2567  }
  2568  
  2569  // AsMediaObject is the BasicResponseBase implementation for TrendingVideos.
  2570  func (tv TrendingVideos) AsMediaObject() (*MediaObject, bool) {
  2571  	return nil, false
  2572  }
  2573  
  2574  // AsBasicMediaObject is the BasicResponseBase implementation for TrendingVideos.
  2575  func (tv TrendingVideos) AsBasicMediaObject() (BasicMediaObject, bool) {
  2576  	return nil, false
  2577  }
  2578  
  2579  // AsResponse is the BasicResponseBase implementation for TrendingVideos.
  2580  func (tv TrendingVideos) AsResponse() (*Response, bool) {
  2581  	return nil, false
  2582  }
  2583  
  2584  // AsBasicResponse is the BasicResponseBase implementation for TrendingVideos.
  2585  func (tv TrendingVideos) AsBasicResponse() (BasicResponse, bool) {
  2586  	return &tv, true
  2587  }
  2588  
  2589  // AsThing is the BasicResponseBase implementation for TrendingVideos.
  2590  func (tv TrendingVideos) AsThing() (*Thing, bool) {
  2591  	return nil, false
  2592  }
  2593  
  2594  // AsBasicThing is the BasicResponseBase implementation for TrendingVideos.
  2595  func (tv TrendingVideos) AsBasicThing() (BasicThing, bool) {
  2596  	return nil, false
  2597  }
  2598  
  2599  // AsCreativeWork is the BasicResponseBase implementation for TrendingVideos.
  2600  func (tv TrendingVideos) AsCreativeWork() (*CreativeWork, bool) {
  2601  	return nil, false
  2602  }
  2603  
  2604  // AsBasicCreativeWork is the BasicResponseBase implementation for TrendingVideos.
  2605  func (tv TrendingVideos) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  2606  	return nil, false
  2607  }
  2608  
  2609  // AsIdentifiable is the BasicResponseBase implementation for TrendingVideos.
  2610  func (tv TrendingVideos) AsIdentifiable() (*Identifiable, bool) {
  2611  	return nil, false
  2612  }
  2613  
  2614  // AsBasicIdentifiable is the BasicResponseBase implementation for TrendingVideos.
  2615  func (tv TrendingVideos) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  2616  	return &tv, true
  2617  }
  2618  
  2619  // AsErrorResponse is the BasicResponseBase implementation for TrendingVideos.
  2620  func (tv TrendingVideos) AsErrorResponse() (*ErrorResponse, bool) {
  2621  	return nil, false
  2622  }
  2623  
  2624  // AsTrendingVideos is the BasicResponseBase implementation for TrendingVideos.
  2625  func (tv TrendingVideos) AsTrendingVideos() (*TrendingVideos, bool) {
  2626  	return &tv, true
  2627  }
  2628  
  2629  // AsVideoDetails is the BasicResponseBase implementation for TrendingVideos.
  2630  func (tv TrendingVideos) AsVideoDetails() (*VideoDetails, bool) {
  2631  	return nil, false
  2632  }
  2633  
  2634  // AsResponseBase is the BasicResponseBase implementation for TrendingVideos.
  2635  func (tv TrendingVideos) AsResponseBase() (*ResponseBase, bool) {
  2636  	return nil, false
  2637  }
  2638  
  2639  // AsBasicResponseBase is the BasicResponseBase implementation for TrendingVideos.
  2640  func (tv TrendingVideos) AsBasicResponseBase() (BasicResponseBase, bool) {
  2641  	return &tv, true
  2642  }
  2643  
  2644  // TrendingVideosCategory ...
  2645  type TrendingVideosCategory struct {
  2646  	Title         *string                      `json:"title,omitempty"`
  2647  	Subcategories *[]TrendingVideosSubcategory `json:"subcategories,omitempty"`
  2648  }
  2649  
  2650  // TrendingVideosSubcategory ...
  2651  type TrendingVideosSubcategory struct {
  2652  	Title *string               `json:"title,omitempty"`
  2653  	Tiles *[]TrendingVideosTile `json:"tiles,omitempty"`
  2654  }
  2655  
  2656  // TrendingVideosTile ...
  2657  type TrendingVideosTile struct {
  2658  	Query *Query       `json:"query,omitempty"`
  2659  	Image *ImageObject `json:"image,omitempty"`
  2660  }
  2661  
  2662  // VideoDetails ...
  2663  type VideoDetails struct {
  2664  	autorest.Response `json:"-"`
  2665  	// RelatedVideos - READ-ONLY
  2666  	RelatedVideos *VideosModule `json:"relatedVideos,omitempty"`
  2667  	// VideoResult - READ-ONLY
  2668  	VideoResult *VideoObject `json:"videoResult,omitempty"`
  2669  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  2670  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  2671  	// ID - READ-ONLY; A String identifier.
  2672  	ID *string `json:"id,omitempty"`
  2673  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
  2674  	Type Type `json:"_type,omitempty"`
  2675  }
  2676  
  2677  // MarshalJSON is the custom marshaler for VideoDetails.
  2678  func (vd VideoDetails) MarshalJSON() ([]byte, error) {
  2679  	vd.Type = TypeVideoDetails
  2680  	objectMap := make(map[string]interface{})
  2681  	if vd.Type != "" {
  2682  		objectMap["_type"] = vd.Type
  2683  	}
  2684  	return json.Marshal(objectMap)
  2685  }
  2686  
  2687  // AsImageObject is the BasicResponseBase implementation for VideoDetails.
  2688  func (vd VideoDetails) AsImageObject() (*ImageObject, bool) {
  2689  	return nil, false
  2690  }
  2691  
  2692  // AsVideoObject is the BasicResponseBase implementation for VideoDetails.
  2693  func (vd VideoDetails) AsVideoObject() (*VideoObject, bool) {
  2694  	return nil, false
  2695  }
  2696  
  2697  // AsVideos is the BasicResponseBase implementation for VideoDetails.
  2698  func (vd VideoDetails) AsVideos() (*Videos, bool) {
  2699  	return nil, false
  2700  }
  2701  
  2702  // AsSearchResultsAnswer is the BasicResponseBase implementation for VideoDetails.
  2703  func (vd VideoDetails) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  2704  	return nil, false
  2705  }
  2706  
  2707  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for VideoDetails.
  2708  func (vd VideoDetails) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  2709  	return nil, false
  2710  }
  2711  
  2712  // AsAnswer is the BasicResponseBase implementation for VideoDetails.
  2713  func (vd VideoDetails) AsAnswer() (*Answer, bool) {
  2714  	return nil, false
  2715  }
  2716  
  2717  // AsBasicAnswer is the BasicResponseBase implementation for VideoDetails.
  2718  func (vd VideoDetails) AsBasicAnswer() (BasicAnswer, bool) {
  2719  	return nil, false
  2720  }
  2721  
  2722  // AsMediaObject is the BasicResponseBase implementation for VideoDetails.
  2723  func (vd VideoDetails) AsMediaObject() (*MediaObject, bool) {
  2724  	return nil, false
  2725  }
  2726  
  2727  // AsBasicMediaObject is the BasicResponseBase implementation for VideoDetails.
  2728  func (vd VideoDetails) AsBasicMediaObject() (BasicMediaObject, bool) {
  2729  	return nil, false
  2730  }
  2731  
  2732  // AsResponse is the BasicResponseBase implementation for VideoDetails.
  2733  func (vd VideoDetails) AsResponse() (*Response, bool) {
  2734  	return nil, false
  2735  }
  2736  
  2737  // AsBasicResponse is the BasicResponseBase implementation for VideoDetails.
  2738  func (vd VideoDetails) AsBasicResponse() (BasicResponse, bool) {
  2739  	return &vd, true
  2740  }
  2741  
  2742  // AsThing is the BasicResponseBase implementation for VideoDetails.
  2743  func (vd VideoDetails) AsThing() (*Thing, bool) {
  2744  	return nil, false
  2745  }
  2746  
  2747  // AsBasicThing is the BasicResponseBase implementation for VideoDetails.
  2748  func (vd VideoDetails) AsBasicThing() (BasicThing, bool) {
  2749  	return nil, false
  2750  }
  2751  
  2752  // AsCreativeWork is the BasicResponseBase implementation for VideoDetails.
  2753  func (vd VideoDetails) AsCreativeWork() (*CreativeWork, bool) {
  2754  	return nil, false
  2755  }
  2756  
  2757  // AsBasicCreativeWork is the BasicResponseBase implementation for VideoDetails.
  2758  func (vd VideoDetails) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  2759  	return nil, false
  2760  }
  2761  
  2762  // AsIdentifiable is the BasicResponseBase implementation for VideoDetails.
  2763  func (vd VideoDetails) AsIdentifiable() (*Identifiable, bool) {
  2764  	return nil, false
  2765  }
  2766  
  2767  // AsBasicIdentifiable is the BasicResponseBase implementation for VideoDetails.
  2768  func (vd VideoDetails) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  2769  	return &vd, true
  2770  }
  2771  
  2772  // AsErrorResponse is the BasicResponseBase implementation for VideoDetails.
  2773  func (vd VideoDetails) AsErrorResponse() (*ErrorResponse, bool) {
  2774  	return nil, false
  2775  }
  2776  
  2777  // AsTrendingVideos is the BasicResponseBase implementation for VideoDetails.
  2778  func (vd VideoDetails) AsTrendingVideos() (*TrendingVideos, bool) {
  2779  	return nil, false
  2780  }
  2781  
  2782  // AsVideoDetails is the BasicResponseBase implementation for VideoDetails.
  2783  func (vd VideoDetails) AsVideoDetails() (*VideoDetails, bool) {
  2784  	return &vd, true
  2785  }
  2786  
  2787  // AsResponseBase is the BasicResponseBase implementation for VideoDetails.
  2788  func (vd VideoDetails) AsResponseBase() (*ResponseBase, bool) {
  2789  	return nil, false
  2790  }
  2791  
  2792  // AsBasicResponseBase is the BasicResponseBase implementation for VideoDetails.
  2793  func (vd VideoDetails) AsBasicResponseBase() (BasicResponseBase, bool) {
  2794  	return &vd, true
  2795  }
  2796  
  2797  // VideoObject defines a video object that is relevant to the query.
  2798  type VideoObject struct {
  2799  	// MotionThumbnailURL - READ-ONLY
  2800  	MotionThumbnailURL *string `json:"motionThumbnailUrl,omitempty"`
  2801  	// MotionThumbnailID - READ-ONLY
  2802  	MotionThumbnailID *string `json:"motionThumbnailId,omitempty"`
  2803  	// EmbedHTML - READ-ONLY
  2804  	EmbedHTML *string `json:"embedHtml,omitempty"`
  2805  	// AllowHTTPSEmbed - READ-ONLY
  2806  	AllowHTTPSEmbed *bool `json:"allowHttpsEmbed,omitempty"`
  2807  	// ViewCount - READ-ONLY
  2808  	ViewCount *int32 `json:"viewCount,omitempty"`
  2809  	// Thumbnail - READ-ONLY
  2810  	Thumbnail *ImageObject `json:"thumbnail,omitempty"`
  2811  	// VideoID - READ-ONLY
  2812  	VideoID *string `json:"videoId,omitempty"`
  2813  	// AllowMobileEmbed - READ-ONLY
  2814  	AllowMobileEmbed *bool `json:"allowMobileEmbed,omitempty"`
  2815  	// IsSuperfresh - READ-ONLY
  2816  	IsSuperfresh *bool `json:"isSuperfresh,omitempty"`
  2817  	// ContentURL - READ-ONLY; Original URL to retrieve the source (file) for the media object (e.g the source URL for the image).
  2818  	ContentURL *string `json:"contentUrl,omitempty"`
  2819  	// HostPageURL - READ-ONLY; URL of the page that hosts the media object.
  2820  	HostPageURL *string `json:"hostPageUrl,omitempty"`
  2821  	// Width - READ-ONLY; The width of the source media object, in pixels.
  2822  	Width *int32 `json:"width,omitempty"`
  2823  	// Height - READ-ONLY; The height of the source media object, in pixels.
  2824  	Height *int32 `json:"height,omitempty"`
  2825  	// ThumbnailURL - READ-ONLY; The URL to a thumbnail of the item.
  2826  	ThumbnailURL *string `json:"thumbnailUrl,omitempty"`
  2827  	// Provider - READ-ONLY; The source of the creative work.
  2828  	Provider *[]BasicThing `json:"provider,omitempty"`
  2829  	// Text - READ-ONLY
  2830  	Text *string `json:"text,omitempty"`
  2831  	// Name - READ-ONLY; The name of the thing represented by this object.
  2832  	Name *string `json:"name,omitempty"`
  2833  	// URL - READ-ONLY; The URL to get more information about the thing represented by this object.
  2834  	URL *string `json:"url,omitempty"`
  2835  	// Image - READ-ONLY
  2836  	Image *ImageObject `json:"image,omitempty"`
  2837  	// Description - READ-ONLY; A short description of the item.
  2838  	Description *string `json:"description,omitempty"`
  2839  	// AlternateName - READ-ONLY
  2840  	AlternateName *string `json:"alternateName,omitempty"`
  2841  	// BingID - READ-ONLY; An ID that uniquely identifies this item.
  2842  	BingID *string `json:"bingId,omitempty"`
  2843  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  2844  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  2845  	// ID - READ-ONLY; A String identifier.
  2846  	ID *string `json:"id,omitempty"`
  2847  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
  2848  	Type Type `json:"_type,omitempty"`
  2849  }
  2850  
  2851  // MarshalJSON is the custom marshaler for VideoObject.
  2852  func (vo VideoObject) MarshalJSON() ([]byte, error) {
  2853  	vo.Type = TypeVideoObject
  2854  	objectMap := make(map[string]interface{})
  2855  	if vo.Type != "" {
  2856  		objectMap["_type"] = vo.Type
  2857  	}
  2858  	return json.Marshal(objectMap)
  2859  }
  2860  
  2861  // AsImageObject is the BasicResponseBase implementation for VideoObject.
  2862  func (vo VideoObject) AsImageObject() (*ImageObject, bool) {
  2863  	return nil, false
  2864  }
  2865  
  2866  // AsVideoObject is the BasicResponseBase implementation for VideoObject.
  2867  func (vo VideoObject) AsVideoObject() (*VideoObject, bool) {
  2868  	return &vo, true
  2869  }
  2870  
  2871  // AsVideos is the BasicResponseBase implementation for VideoObject.
  2872  func (vo VideoObject) AsVideos() (*Videos, bool) {
  2873  	return nil, false
  2874  }
  2875  
  2876  // AsSearchResultsAnswer is the BasicResponseBase implementation for VideoObject.
  2877  func (vo VideoObject) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  2878  	return nil, false
  2879  }
  2880  
  2881  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for VideoObject.
  2882  func (vo VideoObject) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  2883  	return nil, false
  2884  }
  2885  
  2886  // AsAnswer is the BasicResponseBase implementation for VideoObject.
  2887  func (vo VideoObject) AsAnswer() (*Answer, bool) {
  2888  	return nil, false
  2889  }
  2890  
  2891  // AsBasicAnswer is the BasicResponseBase implementation for VideoObject.
  2892  func (vo VideoObject) AsBasicAnswer() (BasicAnswer, bool) {
  2893  	return nil, false
  2894  }
  2895  
  2896  // AsMediaObject is the BasicResponseBase implementation for VideoObject.
  2897  func (vo VideoObject) AsMediaObject() (*MediaObject, bool) {
  2898  	return nil, false
  2899  }
  2900  
  2901  // AsBasicMediaObject is the BasicResponseBase implementation for VideoObject.
  2902  func (vo VideoObject) AsBasicMediaObject() (BasicMediaObject, bool) {
  2903  	return &vo, true
  2904  }
  2905  
  2906  // AsResponse is the BasicResponseBase implementation for VideoObject.
  2907  func (vo VideoObject) AsResponse() (*Response, bool) {
  2908  	return nil, false
  2909  }
  2910  
  2911  // AsBasicResponse is the BasicResponseBase implementation for VideoObject.
  2912  func (vo VideoObject) AsBasicResponse() (BasicResponse, bool) {
  2913  	return &vo, true
  2914  }
  2915  
  2916  // AsThing is the BasicResponseBase implementation for VideoObject.
  2917  func (vo VideoObject) AsThing() (*Thing, bool) {
  2918  	return nil, false
  2919  }
  2920  
  2921  // AsBasicThing is the BasicResponseBase implementation for VideoObject.
  2922  func (vo VideoObject) AsBasicThing() (BasicThing, bool) {
  2923  	return &vo, true
  2924  }
  2925  
  2926  // AsCreativeWork is the BasicResponseBase implementation for VideoObject.
  2927  func (vo VideoObject) AsCreativeWork() (*CreativeWork, bool) {
  2928  	return nil, false
  2929  }
  2930  
  2931  // AsBasicCreativeWork is the BasicResponseBase implementation for VideoObject.
  2932  func (vo VideoObject) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  2933  	return &vo, true
  2934  }
  2935  
  2936  // AsIdentifiable is the BasicResponseBase implementation for VideoObject.
  2937  func (vo VideoObject) AsIdentifiable() (*Identifiable, bool) {
  2938  	return nil, false
  2939  }
  2940  
  2941  // AsBasicIdentifiable is the BasicResponseBase implementation for VideoObject.
  2942  func (vo VideoObject) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  2943  	return &vo, true
  2944  }
  2945  
  2946  // AsErrorResponse is the BasicResponseBase implementation for VideoObject.
  2947  func (vo VideoObject) AsErrorResponse() (*ErrorResponse, bool) {
  2948  	return nil, false
  2949  }
  2950  
  2951  // AsTrendingVideos is the BasicResponseBase implementation for VideoObject.
  2952  func (vo VideoObject) AsTrendingVideos() (*TrendingVideos, bool) {
  2953  	return nil, false
  2954  }
  2955  
  2956  // AsVideoDetails is the BasicResponseBase implementation for VideoObject.
  2957  func (vo VideoObject) AsVideoDetails() (*VideoDetails, bool) {
  2958  	return nil, false
  2959  }
  2960  
  2961  // AsResponseBase is the BasicResponseBase implementation for VideoObject.
  2962  func (vo VideoObject) AsResponseBase() (*ResponseBase, bool) {
  2963  	return nil, false
  2964  }
  2965  
  2966  // AsBasicResponseBase is the BasicResponseBase implementation for VideoObject.
  2967  func (vo VideoObject) AsBasicResponseBase() (BasicResponseBase, bool) {
  2968  	return &vo, true
  2969  }
  2970  
  2971  // UnmarshalJSON is the custom unmarshaler for VideoObject struct.
  2972  func (vo *VideoObject) UnmarshalJSON(body []byte) error {
  2973  	var m map[string]*json.RawMessage
  2974  	err := json.Unmarshal(body, &m)
  2975  	if err != nil {
  2976  		return err
  2977  	}
  2978  	for k, v := range m {
  2979  		switch k {
  2980  		case "motionThumbnailUrl":
  2981  			if v != nil {
  2982  				var motionThumbnailURL string
  2983  				err = json.Unmarshal(*v, &motionThumbnailURL)
  2984  				if err != nil {
  2985  					return err
  2986  				}
  2987  				vo.MotionThumbnailURL = &motionThumbnailURL
  2988  			}
  2989  		case "motionThumbnailId":
  2990  			if v != nil {
  2991  				var motionThumbnailID string
  2992  				err = json.Unmarshal(*v, &motionThumbnailID)
  2993  				if err != nil {
  2994  					return err
  2995  				}
  2996  				vo.MotionThumbnailID = &motionThumbnailID
  2997  			}
  2998  		case "embedHtml":
  2999  			if v != nil {
  3000  				var embedHTML string
  3001  				err = json.Unmarshal(*v, &embedHTML)
  3002  				if err != nil {
  3003  					return err
  3004  				}
  3005  				vo.EmbedHTML = &embedHTML
  3006  			}
  3007  		case "allowHttpsEmbed":
  3008  			if v != nil {
  3009  				var allowHTTPSEmbed bool
  3010  				err = json.Unmarshal(*v, &allowHTTPSEmbed)
  3011  				if err != nil {
  3012  					return err
  3013  				}
  3014  				vo.AllowHTTPSEmbed = &allowHTTPSEmbed
  3015  			}
  3016  		case "viewCount":
  3017  			if v != nil {
  3018  				var viewCount int32
  3019  				err = json.Unmarshal(*v, &viewCount)
  3020  				if err != nil {
  3021  					return err
  3022  				}
  3023  				vo.ViewCount = &viewCount
  3024  			}
  3025  		case "thumbnail":
  3026  			if v != nil {
  3027  				var thumbnail ImageObject
  3028  				err = json.Unmarshal(*v, &thumbnail)
  3029  				if err != nil {
  3030  					return err
  3031  				}
  3032  				vo.Thumbnail = &thumbnail
  3033  			}
  3034  		case "videoId":
  3035  			if v != nil {
  3036  				var videoID string
  3037  				err = json.Unmarshal(*v, &videoID)
  3038  				if err != nil {
  3039  					return err
  3040  				}
  3041  				vo.VideoID = &videoID
  3042  			}
  3043  		case "allowMobileEmbed":
  3044  			if v != nil {
  3045  				var allowMobileEmbed bool
  3046  				err = json.Unmarshal(*v, &allowMobileEmbed)
  3047  				if err != nil {
  3048  					return err
  3049  				}
  3050  				vo.AllowMobileEmbed = &allowMobileEmbed
  3051  			}
  3052  		case "isSuperfresh":
  3053  			if v != nil {
  3054  				var isSuperfresh bool
  3055  				err = json.Unmarshal(*v, &isSuperfresh)
  3056  				if err != nil {
  3057  					return err
  3058  				}
  3059  				vo.IsSuperfresh = &isSuperfresh
  3060  			}
  3061  		case "contentUrl":
  3062  			if v != nil {
  3063  				var contentURL string
  3064  				err = json.Unmarshal(*v, &contentURL)
  3065  				if err != nil {
  3066  					return err
  3067  				}
  3068  				vo.ContentURL = &contentURL
  3069  			}
  3070  		case "hostPageUrl":
  3071  			if v != nil {
  3072  				var hostPageURL string
  3073  				err = json.Unmarshal(*v, &hostPageURL)
  3074  				if err != nil {
  3075  					return err
  3076  				}
  3077  				vo.HostPageURL = &hostPageURL
  3078  			}
  3079  		case "width":
  3080  			if v != nil {
  3081  				var width int32
  3082  				err = json.Unmarshal(*v, &width)
  3083  				if err != nil {
  3084  					return err
  3085  				}
  3086  				vo.Width = &width
  3087  			}
  3088  		case "height":
  3089  			if v != nil {
  3090  				var height int32
  3091  				err = json.Unmarshal(*v, &height)
  3092  				if err != nil {
  3093  					return err
  3094  				}
  3095  				vo.Height = &height
  3096  			}
  3097  		case "thumbnailUrl":
  3098  			if v != nil {
  3099  				var thumbnailURL string
  3100  				err = json.Unmarshal(*v, &thumbnailURL)
  3101  				if err != nil {
  3102  					return err
  3103  				}
  3104  				vo.ThumbnailURL = &thumbnailURL
  3105  			}
  3106  		case "provider":
  3107  			if v != nil {
  3108  				provider, err := unmarshalBasicThingArray(*v)
  3109  				if err != nil {
  3110  					return err
  3111  				}
  3112  				vo.Provider = &provider
  3113  			}
  3114  		case "text":
  3115  			if v != nil {
  3116  				var textVar string
  3117  				err = json.Unmarshal(*v, &textVar)
  3118  				if err != nil {
  3119  					return err
  3120  				}
  3121  				vo.Text = &textVar
  3122  			}
  3123  		case "name":
  3124  			if v != nil {
  3125  				var name string
  3126  				err = json.Unmarshal(*v, &name)
  3127  				if err != nil {
  3128  					return err
  3129  				}
  3130  				vo.Name = &name
  3131  			}
  3132  		case "url":
  3133  			if v != nil {
  3134  				var URL string
  3135  				err = json.Unmarshal(*v, &URL)
  3136  				if err != nil {
  3137  					return err
  3138  				}
  3139  				vo.URL = &URL
  3140  			}
  3141  		case "image":
  3142  			if v != nil {
  3143  				var imageVar ImageObject
  3144  				err = json.Unmarshal(*v, &imageVar)
  3145  				if err != nil {
  3146  					return err
  3147  				}
  3148  				vo.Image = &imageVar
  3149  			}
  3150  		case "description":
  3151  			if v != nil {
  3152  				var description string
  3153  				err = json.Unmarshal(*v, &description)
  3154  				if err != nil {
  3155  					return err
  3156  				}
  3157  				vo.Description = &description
  3158  			}
  3159  		case "alternateName":
  3160  			if v != nil {
  3161  				var alternateName string
  3162  				err = json.Unmarshal(*v, &alternateName)
  3163  				if err != nil {
  3164  					return err
  3165  				}
  3166  				vo.AlternateName = &alternateName
  3167  			}
  3168  		case "bingId":
  3169  			if v != nil {
  3170  				var bingID string
  3171  				err = json.Unmarshal(*v, &bingID)
  3172  				if err != nil {
  3173  					return err
  3174  				}
  3175  				vo.BingID = &bingID
  3176  			}
  3177  		case "webSearchUrl":
  3178  			if v != nil {
  3179  				var webSearchURL string
  3180  				err = json.Unmarshal(*v, &webSearchURL)
  3181  				if err != nil {
  3182  					return err
  3183  				}
  3184  				vo.WebSearchURL = &webSearchURL
  3185  			}
  3186  		case "id":
  3187  			if v != nil {
  3188  				var ID string
  3189  				err = json.Unmarshal(*v, &ID)
  3190  				if err != nil {
  3191  					return err
  3192  				}
  3193  				vo.ID = &ID
  3194  			}
  3195  		case "_type":
  3196  			if v != nil {
  3197  				var typeVar Type
  3198  				err = json.Unmarshal(*v, &typeVar)
  3199  				if err != nil {
  3200  					return err
  3201  				}
  3202  				vo.Type = typeVar
  3203  			}
  3204  		}
  3205  	}
  3206  
  3207  	return nil
  3208  }
  3209  
  3210  // Videos defines a video answer.
  3211  type Videos struct {
  3212  	autorest.Response `json:"-"`
  3213  	// Value - A list of video objects that are relevant to the query.
  3214  	Value *[]VideoObject `json:"value,omitempty"`
  3215  	// NextOffset - READ-ONLY
  3216  	NextOffset *int32 `json:"nextOffset,omitempty"`
  3217  	// Scenario - READ-ONLY; Possible values include: 'List', 'SingleDominantVideo'
  3218  	Scenario VideoQueryScenario `json:"scenario,omitempty"`
  3219  	// QueryExpansions - READ-ONLY
  3220  	QueryExpansions *[]Query `json:"queryExpansions,omitempty"`
  3221  	// PivotSuggestions - READ-ONLY
  3222  	PivotSuggestions *[]PivotSuggestions `json:"pivotSuggestions,omitempty"`
  3223  	// 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.
  3224  	TotalEstimatedMatches *int64 `json:"totalEstimatedMatches,omitempty"`
  3225  	// IsFamilyFriendly - READ-ONLY
  3226  	IsFamilyFriendly *bool `json:"isFamilyFriendly,omitempty"`
  3227  	// FollowUpQueries - READ-ONLY
  3228  	FollowUpQueries *[]Query `json:"followUpQueries,omitempty"`
  3229  	// WebSearchURL - READ-ONLY; The URL To Bing's search result for this item.
  3230  	WebSearchURL *string `json:"webSearchUrl,omitempty"`
  3231  	// ID - READ-ONLY; A String identifier.
  3232  	ID *string `json:"id,omitempty"`
  3233  	// Type - Possible values include: 'TypeResponseBase', 'TypeImageObject', 'TypeVideoObject', 'TypeVideos', 'TypeSearchResultsAnswer', 'TypeAnswer', 'TypeMediaObject', 'TypeResponse', 'TypeThing', 'TypeCreativeWork', 'TypeIdentifiable', 'TypeErrorResponse', 'TypeTrendingVideos', 'TypeVideoDetails'
  3234  	Type Type `json:"_type,omitempty"`
  3235  }
  3236  
  3237  // MarshalJSON is the custom marshaler for Videos.
  3238  func (vVar Videos) MarshalJSON() ([]byte, error) {
  3239  	vVar.Type = TypeVideos
  3240  	objectMap := make(map[string]interface{})
  3241  	if vVar.Value != nil {
  3242  		objectMap["value"] = vVar.Value
  3243  	}
  3244  	if vVar.Type != "" {
  3245  		objectMap["_type"] = vVar.Type
  3246  	}
  3247  	return json.Marshal(objectMap)
  3248  }
  3249  
  3250  // AsImageObject is the BasicResponseBase implementation for Videos.
  3251  func (vVar Videos) AsImageObject() (*ImageObject, bool) {
  3252  	return nil, false
  3253  }
  3254  
  3255  // AsVideoObject is the BasicResponseBase implementation for Videos.
  3256  func (vVar Videos) AsVideoObject() (*VideoObject, bool) {
  3257  	return nil, false
  3258  }
  3259  
  3260  // AsVideos is the BasicResponseBase implementation for Videos.
  3261  func (vVar Videos) AsVideos() (*Videos, bool) {
  3262  	return &vVar, true
  3263  }
  3264  
  3265  // AsSearchResultsAnswer is the BasicResponseBase implementation for Videos.
  3266  func (vVar Videos) AsSearchResultsAnswer() (*SearchResultsAnswer, bool) {
  3267  	return nil, false
  3268  }
  3269  
  3270  // AsBasicSearchResultsAnswer is the BasicResponseBase implementation for Videos.
  3271  func (vVar Videos) AsBasicSearchResultsAnswer() (BasicSearchResultsAnswer, bool) {
  3272  	return &vVar, true
  3273  }
  3274  
  3275  // AsAnswer is the BasicResponseBase implementation for Videos.
  3276  func (vVar Videos) AsAnswer() (*Answer, bool) {
  3277  	return nil, false
  3278  }
  3279  
  3280  // AsBasicAnswer is the BasicResponseBase implementation for Videos.
  3281  func (vVar Videos) AsBasicAnswer() (BasicAnswer, bool) {
  3282  	return &vVar, true
  3283  }
  3284  
  3285  // AsMediaObject is the BasicResponseBase implementation for Videos.
  3286  func (vVar Videos) AsMediaObject() (*MediaObject, bool) {
  3287  	return nil, false
  3288  }
  3289  
  3290  // AsBasicMediaObject is the BasicResponseBase implementation for Videos.
  3291  func (vVar Videos) AsBasicMediaObject() (BasicMediaObject, bool) {
  3292  	return nil, false
  3293  }
  3294  
  3295  // AsResponse is the BasicResponseBase implementation for Videos.
  3296  func (vVar Videos) AsResponse() (*Response, bool) {
  3297  	return nil, false
  3298  }
  3299  
  3300  // AsBasicResponse is the BasicResponseBase implementation for Videos.
  3301  func (vVar Videos) AsBasicResponse() (BasicResponse, bool) {
  3302  	return &vVar, true
  3303  }
  3304  
  3305  // AsThing is the BasicResponseBase implementation for Videos.
  3306  func (vVar Videos) AsThing() (*Thing, bool) {
  3307  	return nil, false
  3308  }
  3309  
  3310  // AsBasicThing is the BasicResponseBase implementation for Videos.
  3311  func (vVar Videos) AsBasicThing() (BasicThing, bool) {
  3312  	return nil, false
  3313  }
  3314  
  3315  // AsCreativeWork is the BasicResponseBase implementation for Videos.
  3316  func (vVar Videos) AsCreativeWork() (*CreativeWork, bool) {
  3317  	return nil, false
  3318  }
  3319  
  3320  // AsBasicCreativeWork is the BasicResponseBase implementation for Videos.
  3321  func (vVar Videos) AsBasicCreativeWork() (BasicCreativeWork, bool) {
  3322  	return nil, false
  3323  }
  3324  
  3325  // AsIdentifiable is the BasicResponseBase implementation for Videos.
  3326  func (vVar Videos) AsIdentifiable() (*Identifiable, bool) {
  3327  	return nil, false
  3328  }
  3329  
  3330  // AsBasicIdentifiable is the BasicResponseBase implementation for Videos.
  3331  func (vVar Videos) AsBasicIdentifiable() (BasicIdentifiable, bool) {
  3332  	return &vVar, true
  3333  }
  3334  
  3335  // AsErrorResponse is the BasicResponseBase implementation for Videos.
  3336  func (vVar Videos) AsErrorResponse() (*ErrorResponse, bool) {
  3337  	return nil, false
  3338  }
  3339  
  3340  // AsTrendingVideos is the BasicResponseBase implementation for Videos.
  3341  func (vVar Videos) AsTrendingVideos() (*TrendingVideos, bool) {
  3342  	return nil, false
  3343  }
  3344  
  3345  // AsVideoDetails is the BasicResponseBase implementation for Videos.
  3346  func (vVar Videos) AsVideoDetails() (*VideoDetails, bool) {
  3347  	return nil, false
  3348  }
  3349  
  3350  // AsResponseBase is the BasicResponseBase implementation for Videos.
  3351  func (vVar Videos) AsResponseBase() (*ResponseBase, bool) {
  3352  	return nil, false
  3353  }
  3354  
  3355  // AsBasicResponseBase is the BasicResponseBase implementation for Videos.
  3356  func (vVar Videos) AsBasicResponseBase() (BasicResponseBase, bool) {
  3357  	return &vVar, true
  3358  }
  3359  
  3360  // VideosModule ...
  3361  type VideosModule struct {
  3362  	// Value - READ-ONLY
  3363  	Value *[]VideoObject `json:"value,omitempty"`
  3364  }
  3365  
  3366  // MarshalJSON is the custom marshaler for VideosModule.
  3367  func (VM VideosModule) MarshalJSON() ([]byte, error) {
  3368  	objectMap := make(map[string]interface{})
  3369  	return json.Marshal(objectMap)
  3370  }
  3371  

View as plain text